javascript - 使用变换平移和缩放的带有 div 的缩放容器

标签 javascript css css-transforms

我想在单击时缩放带有 div 的容器,仅使用 css 变换和缩放。问题是,它只适用于第一次点击,第二次,第三次……我的 div 翻译很奇怪。对我来说非常重要的是扩展背景。

		var scale =0.5;
        var interval = 5;
        var line_weight =1;
     $('document').ready(function(){
            $('#container').click(function(){               

            $('.test').each(function(i){

                var position = $(this).position();
                var positionL=position.left;
                var positionT=position.top;
                
                var positionTscale=positionT*scale;
                var positionLscale=positionL*scale;
                
                var translateX = -(positionL-positionLscale)*(1/scale);
                var translateY = -(positionT-positionTscale) *(1/scale);
                
                $(this).css( 'transform', 'scale('+ scale +')' + ' translate('+ translateX + 'px'+','+ translateY +'px )' ); 
            });
            
           $(".test").css('background', 'repeating-linear-gradient(0deg, #000, #000' + line_weight/scale+ ' #ffffff 0, #ffffff ' + scale*interval+ 'px');
           $(".test").css('border-right', (line_weight) +'px solid');


          });
          
        

        $('#container').dblclick(function(){
                $(".test").css('transform', 'scale(1.0)');
                $(".test").css('background', 'repeating-linear-gradient(0deg, #000, #000' +line_weight+' , #ffffff 0, #ffffff ' + interval + 'px');
                $(".test").css('border-right', line_weight+'px solid');
          });

      }); 

     </script>   
body{
                width: 19200px;
                height: 10750px;
            }


             .test{
                height: 200px;
                width: 160px;
                display: inline-block;
                border-right: 1px solid;
                background: repeating-linear-gradient(0deg, #000, #000 1px, #ffffff 0, #ffffff 5px);

             }


             #container{
                width: 340px;
                height: 400px;

             }

             .column{
                display: inline-block;
             }
        <script src="jquery-3.0.0.min.js"></script>
   

        
<body> 

    <div id="container">
            <div>
                <div class="test" >
                    <p class="click">test1</p>
                </div> 
                <div class="test" >
                    <p class="click">test2</p>
                </div>
            </div>

            <div>
                <div class="test">
                    <p class="click">test3</p>
                </div> 
                <div class="test">
                    <p class="click">test4</p>
                </div> 
            </div> 
    </div>
</body>

jsfiiddle 上的代码

最佳答案

您只需要更改transform: scale(value) 中的值即可。 我为示例添加了两个按钮,供您放大和缩小:

<p class="zoom _bigger">
    zoom++
</p>
<p class="zoom _smaller">
    zoom--
</p>

这里是解决你问题的所有js:

$('document').ready(function(){
  // We set value as 2, because further we will zoom with a half
  var zoomValue = 2;

  $('.zoom').on('click', function(){               
    if ($(this).hasClass('_bigger')) {
      zoomValue++;
    } else if (zoomValue > 2) {
      zoomValue--;
    } else {
      return false;
    }            
      $('#container').css('transform', 'scale(' + zoomValue * 0.5 + ')');
    });
});

我使用了一半的缩放值,你可以玩它并设置你想要的。

可以查看my example on jsfiddle .

关于javascript - 使用变换平移和缩放的带有 div 的缩放容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38505844/

相关文章:

html - 在表格单元格内使输入文本字段全宽

jquery - 使用jquery删除类后如何使css不忽略转换函数

html - 如何在比例动画中将原点保持在图像的中心?

javascript - JS 对象文字和 JSON 字符串有什么区别?

javascript - 使用 javascript 或 jquery 移调音乐

javascript - d3 voronoi arc Map - 控制.arcs的属性

html - CSS3::selection 选择器无法在 anchor 标签上正常工作

javascript - CSS 'translate(0px, 0px)' 元素样式的正则表达式匹配值

css - 背景附件:在 Firefox 或 Edge 与 Chrome 中修复

javascript - 将 jquery 添加到 firefox 扩展