变换 y 轴上的元素并将其左右对齐到外部元素
Transform an element on y-axis and align it left and right to outer element with
当我像那样旋转 div 元素 -6 度时...
.skew-slider {
max-width: 100%;
overflow: hidden;
float: left;
perspective: 500px;
margin: 0 auto 60px;
display: block;
}
.skew-slider .inner-wrapper {
width: 100%;
float: left;
display: block;
-webkit-transform: rotateY( -6deg );
-moz-transform: rotateY( -6deg );
-o-transform: rotateY( -6deg );
transform: rotateY( -6deg );
}
...元素旋转正确,透视也正确。这么久这么好。但是旋转后的元素左右边框要和外边框准确对齐,中间不能有空格,也不能在右边溢出。
示例如下:http://websamurai.ch/Whosebug/skew-slider.html
有人对此有解决方案吗?
向带有 class "skew-slider"
的元素添加 position: absolute; left: 0;
即可。
我用您提供的示例尝试了这种方法并且有效。
您是否尝试过使用transform-origin
例如:
transform-origin: left;
我想我已经找到了另一个解决方案,它几乎可以完美运行。我添加了一个脚本,它将 transform-origin z 轴参数添加到 window 宽度的 -1/3(即使在调整 window 大小时),并且现在左右外边界几乎完全一样。
脚本中的主要部分是这些:
$(window).resize(function() {
$('.skew-slider .inner-wrapper').css('transform-origin', 'center center -' + $(window).width()/3 + 'px');
});
以及 css 中的这些:
.skew-slider {
max-width: 100%;
overflow-y: visible;
overflow-x: hidden;
perspective: 500px;
margin: 0 auto 60px;
display: block;
position: absolute;
left: 0;
}
.skew-slider .inner-wrapper {
width: 100%;
float: left;
display: block;
left: 0;
right: 0;
-ms-transform: rotateY( -6deg ) scale(0.8);
-webkit-transform: rotateY( -6deg ) scale(0.8);
-moz-transform: rotateY( -6deg ) scale(0.8);
-o-transform: rotateY( -6deg ) scale(0.8);
transform: rotateY( -6deg ) scale(0.8);
}
.skew-slider ul {
width: 2520px;
float: left;
display: block;
padding: 0;
margin: 0;
list-style: none;
}
它并不完美,但我还没有找到另一个可行的解决方案,从可用性的角度来看,它是这样工作的。
当我像那样旋转 div 元素 -6 度时...
.skew-slider {
max-width: 100%;
overflow: hidden;
float: left;
perspective: 500px;
margin: 0 auto 60px;
display: block;
}
.skew-slider .inner-wrapper {
width: 100%;
float: left;
display: block;
-webkit-transform: rotateY( -6deg );
-moz-transform: rotateY( -6deg );
-o-transform: rotateY( -6deg );
transform: rotateY( -6deg );
}
...元素旋转正确,透视也正确。这么久这么好。但是旋转后的元素左右边框要和外边框准确对齐,中间不能有空格,也不能在右边溢出。
示例如下:http://websamurai.ch/Whosebug/skew-slider.html
有人对此有解决方案吗?
向带有 class "skew-slider"
的元素添加 position: absolute; left: 0;
即可。
我用您提供的示例尝试了这种方法并且有效。
您是否尝试过使用transform-origin
例如:
transform-origin: left;
我想我已经找到了另一个解决方案,它几乎可以完美运行。我添加了一个脚本,它将 transform-origin z 轴参数添加到 window 宽度的 -1/3(即使在调整 window 大小时),并且现在左右外边界几乎完全一样。
脚本中的主要部分是这些:
$(window).resize(function() {
$('.skew-slider .inner-wrapper').css('transform-origin', 'center center -' + $(window).width()/3 + 'px');
});
以及 css 中的这些:
.skew-slider {
max-width: 100%;
overflow-y: visible;
overflow-x: hidden;
perspective: 500px;
margin: 0 auto 60px;
display: block;
position: absolute;
left: 0;
}
.skew-slider .inner-wrapper {
width: 100%;
float: left;
display: block;
left: 0;
right: 0;
-ms-transform: rotateY( -6deg ) scale(0.8);
-webkit-transform: rotateY( -6deg ) scale(0.8);
-moz-transform: rotateY( -6deg ) scale(0.8);
-o-transform: rotateY( -6deg ) scale(0.8);
transform: rotateY( -6deg ) scale(0.8);
}
.skew-slider ul {
width: 2520px;
float: left;
display: block;
padding: 0;
margin: 0;
list-style: none;
}
它并不完美,但我还没有找到另一个可行的解决方案,从可用性的角度来看,它是这样工作的。