我正在尝试创建一个“幻灯片”div,它以恒定的纵横比在屏幕中间居中。
结合这个trick用于居中和cái này对于比率,我想出了这个:
HTML
Percentage sized and still centered.
CSS
/* slide centered in the middle of the screen + width = 80% */
.slide {
vị trí: cố định;
chiều rộng: 80%;
trái: 50%;
trên cùng: 50%;
biến đổi: dịch(-50%, -50%);
màu nền: đỏ;
box-shadow: 0 0 30px rgba(0, 0, 0, 0.2);
}
/* aspect ratio of 2:1 */
.slide:before{
nội dung: "";
hiển thị: khối;
padding-top: 50%;
}
/* stretch the content to the slide size */
.slide > .slide-content {
vị trí: tuyệt đối;
trên cùng: 0;
trái: 0;
phải: 0;
đáy: 0;
phần đệm: 40px 60px;
transition: all 0.6s ease-in-out;
}
fiddle 在这里:https://jsfiddle.net/3jph853w/
它工作得很漂亮,希望在横向 View 中的移动设备上:基于宽度的技巧,div 没有正确调整大小并且它的一部分“溢出”在屏幕之外。当您垂直调整 fiddle 输出的大小时,您可以看到它。
我该如何解决?我宁愿只保留它的 css,需要额外的 html 标记。我对 JS 持开放态度,但我的元素是基于 Angular 的,不使用 jQuery。
这可能是一个开始
Fiddle demo 100% 视口(viewport)
Fiddle demo视口(viewport)的 80%
html, body{
lề: 0;
}
.slide{
vị trí: tuyệt đối;
width: calc(100vh * 2);
height: calc(100vw * 0.5);
max-width: 100vw;
max-height: 100vh;
trên cùng: 50%;
trái: 50%;
biến đổi: dịch(-50%, -50%);
}
.slide-content{
vị trí: tuyệt đối;
trên cùng: 0;
trái: 0;
chiều rộng: 100%;
chiều cao: 100%;
màu nền: đỏ;
phần đệm: 40px 60px;
kích thước hộp: hộp viền;
transition: all 0.6s ease-in-out;
}
Percentage sized and still centered.
Tôi là một lập trình viên xuất sắc, rất giỏi!