2017-09-19 3 views
-1

J'utilise d3 pour zoomer un svg.La barre de défilement n'apparaît que lorsque le bouton du svg atteint le fond de son conteneur

Je voudrais afficher les barres de défilement seulement lorsqu'une partie particulière du svg n'est pas visible (sur mon exemple les deux rectangles).

Mon problème est, la barre de défilement n'apparaît que lorsque la ligne du bas du svg atteint la ligne du bas du corps. Je voudrais la même chose pour la ligne supérieure.

Sur cette image, le fond jaune atteint le bas du corps, donc pour moi, il est logique d'obtenir la barre de défilement.

enter image description here

Pourquoi la barre de défilement ne sont pas visibles sur l'exemple? Le sommet de la svg n'est pas visible ...

enter image description here

Voici la JS Bin, parce que l'extrait dans Stackoverflow ne se comporte pas comme prévu: http://jsbin.com/wewikokova/1/edit

var svg = d3.select('svg'); 
 
var body = d3.select('body'); 
 

 
body.call(d3.zoom().on('zoom', function() { 
 
    svg.node().setAttribute('transform', d3.event.transform); 
 
}));
body { 
 
    background: white; 
 
    
 
    width: 100%; 
 
    height: 100%; 
 
    
 
    overflow: auto; 
 
} 
 

 
svg { 
 
    background: yellow; 
 
    
 
    width: 1000px; 
 
    height: 500px; 
 
} 
 

 
.item-1 { 
 
    fill: blue; 
 
    
 
    x: 489px; 
 
    y: 38px; 
 
    width: 64px; 
 
    height: 36px; 
 
} 
 

 
.item-2 { 
 
    fill: blue; 
 
    
 
    x: 590px; 
 
    y: 60px; 
 
    width: 102.4px; 
 
    height: 60px; 
 
}
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width"> 
 
    <title>JS Bin</title> 
 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/4.2.3/d3.min.js"></script> 
 
</head> 
 
<body> 
 
    <svg xmlns="http://www.w3.org/2000/svg" transform-origin="0 0" viewBox="489 38 203 82"> 
 
     <g> 
 
\t \t \t <rect class="item-1" /> 
 
\t \t \t \t <rect class="item-2" /> 
 
\t \t \t </g> 
 
    </svg> 
 
</body> 
 
</html>

+0

Il semble être lié à cette question https://stackoverflow.com/questions/27374111/how-can-i-have-scrollbar-when-position-is-negative. Il n'y a pas de barre de défilement quand le contenu est lancé par le haut, sinon il devrait y avoir un défilement négatif. – Charles

Répondre

0

qui était normal, haut et à gauche des fenêtres ne frontière pas triger le défilement, c'est pourquoi vous pouvez définir div-marge ou marge gauche à moins sans triger la barre de défilement.

+0

Donc, il n'y a pas de solution ici? – Charles

+0

je ne peux pas imaginer, ce que j'imagine est méchant, mais je ne veux pas dire, peut-être une solution exis que idk, pour l'instant avec mon petit knowladge je asume oui – KEKUATAN