摘自:https://www.cnblogs.com/caizhenbo/p/css.html

需求:

最近产品要求不管原图的大小是多少,宽度一定,高度要自自适应为16:9。

分析:

对于正常的固定好宽度大小,这个需求很容易解决,直接通过人工计算,根据宽度的数值计算好高度的数值,然后css直接设置高度就行了。这样当然简单。可是现在在移动开发的过程中,我们为了自适应不同大小的屏幕,通过设置百分比来定宽,这样css无法通过计算得出这个固定的高度。

当然解决这个方式可以通过js,程序算出绝对高度再进行设置。这是解决问题最容易想到的方法。但是这使我们这个功能的实现需要js的介入,大材小用,我们的原则是能用css实现的功能尽量用css,这有利于后期项目的维护。

css同样可以实现这个问题,我们可以利用边距的百分比属性定义来优雅实现。

我们来看W3C对应边距采用不同值得定义

也就是说如果我们的边距值设置为百分比的话,是基于父元素的宽度

所以CSS的实现方案

我们通过百分比设置宽度,根据宽度的比例数值*9/16,计算出高度的百分比数值,设置内边距为高度的数值,最后用绝对定位把图片百分百填充到我们设置的区域里面

代码实现:

1
2
3
<div class="img_wap">
   <img src=""/>
 </div>
.img_wap{
padding-bottom: 56%;
width: 100%;
position: relative;
} .img_wap img{
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
}

实现效果:

css实现16:9的图片比例的更多相关文章

  1. CSS与HTML5响应式图片

    随着 Retina 屏幕的逐渐普及,网页中对图片的适配要求也越来越高.如何让图片在放大了两倍的 Retina 屏幕显示依然清晰,曾经一度困扰着网页开发者,好在 CSS3 与 HTML5 已经着力在改变 ...

  2. !!!css如何让img图片居中?css的display属性实现图片居中(代码实例)

    在我们开发前端页面的时候,为了让页面效果美观,会让图片呈现居中效果.那么css怎么让img图片居中显示呢?本篇文章给大家带来css如何让img图片居中?css的display属性实现图片居中(代码实例 ...

  3. css中如何做到容器按比例缩放

    需求: 一般在响应式中,我们会要求视频的宽高比为16:9或4:3,这么一来就比较头大了.当用户改变浏览器宽度的时候(改变高度不考虑),视频的宽度变了,那么高度也得根据我们要求的16:9或4:3改变. ...

  4. css网页中设置背景图片的方法详解

    在css代码中设置背景图片的方法,包括背景图片.背景重复.背景固定.背景定位等   用css设置网页中的背景图片,主要有如下几个属性: 1,背景颜色 {">说明:参数取值和颜色属性一样 ...

  5. css 鼠标移动到按钮图片改变;图片换层;鼠标放上透明度改变直到隐藏;

    css 鼠标移动到按钮图片改变: 方法一: <style> .pp a { width:575px; height:157px; background:url(1.jpg);/*图片地址* ...

  6. 7:CSS Sprites的原理(图片整合技术)

    7:CSS Sprites的原理(图片整合技术) 一.将导航背景图片,按钮背景图片等有规则的合并成一张背景图,即将多张图片合为一张整图,然后用background-position”来实现背景图片的定 ...

  7. CSS Sprites的原理(图片整合技术)(CSS精灵)/雪碧图

    CSS Sprites的原理(图片整合技术)(CSS精灵)/雪碧图   一.将导航背景图片,按钮背景图片等有规则的合并成一张背景图,即将多张图片合为一张整图,然后用background-positio ...

  8. Android系统移植与调试之------->如何使用PhotoShop转换24位的bmp图片为16位bmp图片

    使用Android移植时候,很多图片都需要16为的bmp格式,所以研究了一下如何从24位转换成16位,供大家参阅 step1:查看bmp图片的属性,如下图所示,是24位的 step2:用PhotoSh ...

  9. div css 伪类 不固定图片大小 居中, css div 实现三角形

    div css 伪类 不固定图片大小 居中 <style> .pic_box{width:300px; height:300px; background-color:#beceeb; fo ...

随机推荐

  1. List与Array互相转换

    List转换为Array可以这样处理: ArrayList<String> list=new ArrayList<String>(); String[] strings = n ...

  2. Node.js之npm使用

    1.使用国内镜像 本人window8系统安装node.js之后,使用npm的命令安装Express一直失败: npm install express -g (以上命令会将 Express 框架安装在当 ...

  3. C语言编程练习

    1.编程序实现求1-1000之间的所有奇数的和并输出. 解法1: int sum=0; for(int i=1;i<=1000;i++){ sum+=i%2?i:0; } printf(&quo ...

  4. Repeater 中TextBox 触发TextChanged事件

    两种方法 1.TextBox 绑定TextChanged 并设置AutoPostBack ="true" ,如果不设置AutoPostBack ="true"则 ...

  5. tortoise svn中更改用户

    1. Open Windows Explorer.2. Right-click anywhere in the window.3. Click TortoiseSVN → Settings.4. Cl ...

  6. mariadb中创建外键时的一个奇怪的情况

    在建表语句中,将参照的定义放到对应的属性后面,类似于这样: create table tbl2 (id int references tbl1(id)); 发现并没有成功创建外键. 而将参照的定义放到 ...

  7. python base64加密文本内容(1)

    仅仅使用base64加密安全系数太低了,我们还可以自定义base64加密后的文本进行一些变化,提高安全系数,在解密时再回复某些变化 1,先实现一个base64加密 import base64 impo ...

  8. Yii2 Restful api自定义资源

  9. Robotframework 3- 安装

    1. 安装, python3 安装好后,在cmd中运行 pip install robotframework # Install the latest version (does not upgrad ...

  10. uva 10369 Arctic Network

    题意: 有许多基地,每个基地都有两种收发信号的方式,一种是通过无线电收发机,另一种是通过卫星.两个基地之间可以通过卫星交流不管它们相距多远:但是通过无线电交流,就要求它们的距离不超过D.为了方便布置, ...