css如何实现一个自适应容器


本文摘自PHP中文网,作者V,侵删。

目标:

实现一个宽度自适应,高度为宽度一半的容器。

一、思考如何实现

这个问题类似于:我们在移动端页面,上面有一张宽度 100% 的图片,如果我们没设置高度,则图片会根据原有尺寸,等比缩放。

我们可以借助这个想法,根据元素高度,来为元素设置一个相应比例的高度即可。

(推荐教程:CSS入门教程)

二、实现方法1 - 通过 vw 视口单位实现

所谓 视口单位 (viewport units)是相对于视口(viewport)的尺寸而言, 100vw 等于视口宽度的 100% ,即 1vw 等于视口宽度的1%。

我们就可以利用这个特性,实现移动端的宽高等比自适应容器。

HTML代码:

1

2

3

<div class="box">

    <img src="http://images.pingan8787.com/2019_07_12guild_page.png" />

</div>

css代码:

1

2

3

4

5

6

7

8

9

10

11

*{

    margin:0;

    padding:0

}

.box{

    width:100%;

    height:51.5vw

}

.box img{

    width:100%;

}

为什么 .box 高度为 51.5vw 呢?

原因是图片原来的尺寸是 884 * 455 的宽高比例,即 455 / 884 = 51.5% 。

这个方法相比原来图片的等比缩放,有个优点:无论图片是否加载成功,容器高度始终是计算完成,不会造成页面抖动,也不会造成页面重绘,从而提升性能。

下面看看这种情况下,图片加载成功和失败的对比:

25491da44dc799ec34c7ddac107ef5d.png

三、实现方法2 - 通过子元素 padding 实现

通过设置子元素的 padding 属性来实现,是比较常用,也是效果比较好的一种,这里需要理解的是: 子元素的 padding 属性百分比的值是先对父容器的宽度而言 。

这里看下面代码和效果图理解下:

HTML代码:

1

2

3

<div class="box">

    <div class="text">我是王平安,pingan8787</div>

</div>

css代码:

阅读剩余部分

相关阅读 >>

css transform属性怎么用

css类选择符用什么表示?

css怎么设置tr间距

css怎样把一张图片分割开

css如何设置背景

自动清理js、css文件的缓存方法

css有什么作用

js与css的区别是什么

css如何设置图片位置

邮件不支持css怎么办

更多相关阅读请进入《css》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...