padding制作图片自适应布局(CSS百分比)

css知识点:当padding/margin取形式为百分比的值时,无论是left/right,还是top/bottom,都是以父元素的width为参照物的!

一、CSS百分比padding都是相对宽度计算的

在默认的水平文档流方向下,CSS marginpadding属性的垂直方向的百分比值都是相对于宽度计算的,这个和top, bottom等属性的百分比值不一样。

这么设计的原因在我的新书(应该不出几个月就要出版了)中会有说明,这里不展开。

对于padding属性而言,任意方向的百分比padding都现对于宽度计算可以让我们轻松实现固定比例的块级容器,举个例子,假设现在有个

元素:

立即学习“前端免费学习笔记(深入)”;

p { padding: 50%; }

或者:

p { padding: 100% 0 0; }

或者:

p { padding-bottom: 100%; }

则这个

元素尺寸就是一个宽高1:1的正方形,无论其父容器宽度是多少,这个

元素总能保持比例不变。

这种能固定比例的特性什么作用呢?

对于绝大多数都布局,我们并不要求非要比例固定,但是有一种情况例外,那就是图片,因为图片原始尺寸它是固定的。在传统的固定宽度的布局下,我们会通过给图片设定具体的宽度和高度值,来保证我们的图片占据区域稳固;但是在移动端或者在响应式开发情况下,图片最终展现的宽度很可能是不确定的,例如手机端的一个通栏广告,iPhone7下宽度是375,iPhone7 Plus下是414,还有360等尺寸,此时需要的不是对图片进行固定尺寸设定,而是比例设定。

通常有如下一些实现:

1. 固定一个高度,然后使用background-size属性控制,如下:

.banner { height: 40px; background-size: cover;}

实时效果如下:

可以看到随着宽度的变化,总会有部分图片区域(宽度或高度)无法显示,并不是完美的做法。

2. 使用视区宽度单位vw,如下:

.banner { height: 15.15vw; background-size: cover;}

如果对兼容性要求不是很高,使用vw也是一个不错的做法,至少理解起来要更轻松一点。

但是,如果我们的图片不是通栏,而是需要离左右各1rem的距离,此时,我们的CSS代码就要啰嗦点了,想要保持完美比例,就使用借助CSS3 calc()计算:

.banner { height: calc(0.1515 * (100vw - 2rem)); background-size: cover;}

如果,图片距离两侧的宽度是动态不确定的,则,此时calc()也捉襟见肘了,但,恰恰是普普通通其貌不扬的padding属性,其兼容性和适应性都一级棒。

3. 使用百分比padding,如下:

.banner { padding: 15.15% 0 0; background-size: cover;}

此时无论图片的外部元素怎么变动,比例都是恒定不变的。

二、CSS百分比padding与宽度自适应图片布局

但是有时候我们的图片是不方便作为背景图呈现的,而是内联的padding制作图片自适应布局(CSS百分比),百分比padding也是可以轻松应对的,求套路是比较固定的,图片元素外面需要一个固定比例的容器元素,例如下面的HTML结构:

.banner元素同样负责控制比例,然后图片填充.banner元素即可,CSS代码如下:

.banner { padding: 15.15% 0 0; position: relative;}.banner > img { position: absolute; width: 100%; height: 100%; left: 0; top: 0;}

效果就达成了!

眼见为实,去年起点中文网手机版诸多页面的通栏广告就都是这么实现的,最终的效果参见下面的gif截图(如果图无法显示,可以评论反馈):

padding制作图片自适应布局(CSS百分比)

可以看到,无论屏幕宽度多宽,我们的广告图片比例都是固定的,不会有任何剪裁,不会有任何区域缺失,布局就显得非常有弹性,也更健壮。

————-

其实,我之前一直低估百分比padding的实际应用价值,因为有vw单位的存在,毕竟理解vw看上去要更简单一些,所以,一直就没做相关技巧的介绍。但是,随着图片相关布局处理越来越多,我发现,百分比padding的实用价值要比想象的大,要比vw单位适用场景更多,兼容性更好(百分比特性IE6+支持,图片100%覆盖IE8+支持)。

对于复杂布局,如果图片的宽度是不固定的自适应的,我们通常会想到这么一个取巧的做法,就是只设定图片的宽度,例如:

img { width: 100%; }

此时浏览器默认会保持图片比例显示,图片宽度大了,高度也跟着一起变大;图片宽度小了,高度也跟着一起变小。开发人员似乎无需关心图片真实比例是怎样的。

然而这种技巧有一个非常不好的体验问题,那就是随着页面加载的进行,图片占据的高度会有一个从0到计算高度的图片变化,视觉上会有明显的元素跳动,代码层面会有布局重计算。

所以对图片高宽进行同时约定还是有必要的,但是同时要保证宽度自适应,似乎有点难度。记住,如果遇到这种需求场景,没有比百分比padding布局更好的做法!

缩小浏览器宽度可以看到不同宽度下的布局效果,Gif效果截图如下:

padding制作图片自适应布局(CSS百分比)

此demo难点就是图片自适应同时保持比例,以及页面刷新的时候没有布局稳固不晃动,其核心HTML和CSS代码如下:

@@##@@

.works-item-t { padding-bottom: 133%; position: relative;}.works-item-t > img { position: absolute; width: 100%; height: 100%;}

可以看到,当把垂直方向padding值只使用padding-bottom表示的时候,如果没有text-align属性干扰,padding制作图片自适应布局(CSS百分比)元素的left:0;top:0是可以省略的。

对于这种图片宽度100%容器,高度按比例的场景,padding-bottom的百分比值大小就是图片元素的高宽比,就这么简单。

但,有时候,图片宽度并不是100%容器的,例如,图片宽度50%容器宽度,图片高宽比4:3,此时,CSS垂直方向百分比就666了,如下:

.img-box { padding: 0 50% 66.66% 0;}

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

css登录界面美化

css如何实现鼠标滑过缩略图时放大图片

css实现鼠标触发效果

padding制作图片自适应布局(CSS百分比)padding制作图片自适应布局(CSS百分比)

以上就是padding制作图片自适应布局(CSS百分比)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1609956.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 01:07:45
下一篇 2025年12月24日 01:08:18

相关推荐

  • 如何使用源生css3实现圆环加载进度条

    这次给大家带来如何使用源生css3实现圆环加载进度条,使用源生css3实现圆环加载进度条的注意事项有哪些,下面就是实战案例,一起来看一下。 效果图: 当时的要求是让进度条以扇形渐变的效果加载。我想了半天,好像只有用border-img来做渐变图了,还有一个超笨的方法就是写50个长方形分布在进度条上。…

    2025年12月24日
    000
  • CSS 文本字体颜色设置方法(CSS color)

    这篇文章主要介绍了css 文本字体颜色设置方法(css color),需要的朋友可以参考下 一、认识CSS 颜色(CSS color) 这里要介绍的是网页设置颜色包含有哪些;网页颜色规定规范。 1、常用颜色地方包含:字体颜色、超链接颜色、网页背景颜色、边框颜色2、颜色规范与颜色规定:网页使用RGB模…

    2025年12月24日
    000
  • 用纯CSS实现禁止鼠标点击事件示例代码

    这篇文章介绍的是通过纯css实现禁止鼠标点击事件,比起javascript来更加灵活,有需要的可以参考学习。 JavaScript有一个preventDefault方法, 他可用以来取消事件的默认动作。比如取消打开链接,选择文本或拖放等。 复制代码 代码如下: event.preventDefaul…

    好文分享 2025年12月24日
    000
  • CSS实现带倒三角标记的WEB标准菜单效果代码

    这篇文章主要为大家介绍了css实现带倒三角标记的web标准菜单效果代码,通过纯css实现鼠标滑过呈现倒三角标记的显示效果,非常简单实用,需要的朋友可以参考下 本文实例讲述了CSS实现带倒三角标记的WEB标准菜单效果代码。分享给大家供大家参考。具体如下: 这里演示css实现的带倒三角标记的WEB标准菜…

    好文分享 2025年12月24日
    000
  • CSS实现带有小图片的LI图标列表菜单

    这篇文章主要为大家介绍了css实现带有小图片的li图标列表菜单,可实现css图标的正常显示及滑过、点击呈现不同颜色的功能,涉及css针对visited、hover及active等使用技巧,需要的朋友可以参考下 本文实例讲述了CSS实现带有小图片的LI图标列表菜单。分享给大家供大家参考。具体如下: 这…

    2025年12月24日
    000
  • CSS实现页面九宫格布局的简单示范

    九宫格布局在制作一些web app时还是经常可以用到的,这里我们以一个大概的结构示例来作css实现页面九宫格布局的简单示范,不过需要注意ie6下的兼容性问题. 一、效果图: 三、布局二(各浏览器兼容性良好) 立即学习“前端免费学习笔记(深入)”; CSS Code复制内容到剪贴板 九宫格布局 bod…

    2025年12月24日
    000
  • css实现图片切换效果

    本篇文章主要介绍css实现图片切换效果非常不错,不用css,代码比较精简,推荐使用,注意一下多浏览器的兼容性。 代码如下: 纯css图切换 练习 教程来自snwebsite a{ display:block; border:1px solid #cccccc; width:20px; height:…

    好文分享 2025年12月24日
    000
  • 如何使用css固定位置

    本篇文章主要介绍如何使用css固定位置,非常不错,可以方便提示用户等信息,有感兴趣的小伙伴了解一下。 代码如下: 层固定位置练习–by 阿会楠 html,body{ overflow:hidden; padding:0; margin:0; width:100%; height:100%; } #…

    2025年12月24日
    000
  • css中font的缩写

    本篇文章将详细介绍css中font的缩写,有感兴趣的小伙伴参考一下。 实例代码如下: .login_top{height:26px;font:bold 14px/26px “宋体”; border:1px solid #000} .login_top2{height:26px; line-heigh…

    好文分享 2025年12月24日
    000
  • css中Sprites的应用

    本篇文章主要介绍css中sprites的应用,这是一个很简单的应用,不过在设计中,这样做可以减轻服务器的压力,是请求次数减少,是一个不错的方法。 实例代码如下: body { font-family: “Lucida Sans”, “Lucida Sans Unicode”; font-size: …

    好文分享 2025年12月24日
    000
  • 用CSS实现的一张图完成的按钮实例

    本篇文章主要介绍如何用css实现的一张图完成的按钮实例,很好用很奥妙,值得收藏和分享 通过css来读取图片坐标系实现局部背景图,感兴趣的小伙伴参考一下。 网易126登录按钮代码如下: .inp_L1,.inp_L2,{background:url(/upload/20080515201218970.…

    好文分享 2025年12月24日
    000
  • css动画教程

    本篇文章主要向大家介绍如何使用css制作简单的动画,感兴趣的小伙伴参考下. 案例一: 创想鸟 div{width:100px;height:100px;background:red;animation:myfirst 5s;-moz-animation:myfirst 5s; /* Firefox …

    好文分享 2025年12月24日
    000
  • css登录界面美化

    本篇文章主要介绍如何用css美化网站登录界面,需要的小伙伴参考下。 代码如下: 美化登录 *{margin:0;padding:0;}/*去掉页面样式*/ body{color:white;} .content{ background-color:pink; position:absolute;/*…

    好文分享 2025年12月24日
    000
  • css如何实现鼠标滑过缩略图时放大图片

    本篇文章主要介绍css如何实现鼠标滑过缩略图时放大图片,日常购物网站中非常方便实用,有兴趣的小伙伴参考下。 代码如下: www.php.cn 创想鸟 鼠标滑过缩略图时放大图片 本例旨在展示鼠标滑到缩略图上时,放大图片。 @@##@@ 相关推荐: 如何使用HTML+CSS做出鼠标划过就可以显示二级菜单…

    好文分享 2025年12月24日
    000
  • css实现鼠标触发效果

    本片文章主要介绍使用css实现鼠标触发效果,感兴趣的朋友参考下。 代码如下: css打造鼠标触发效果 <!– startList = function() { if (document.all&&document.getElementById) { navRoot = doc…

    好文分享 2025年12月24日
    000
  • 详细介绍有关CSS页面布局技巧

    下面是我给大家整理的详细介绍有关CSS页面布局技巧,有兴趣的同学可以去看看。 设置文本样式 1、字体类型 绝大多数用户系统默认支持的中文字体有宋体、黑体、幼圆、楷体;默认支持的英文字体有arial、arial black、arial narrow、 century gothic 、comic san…

    好文分享 2025年12月24日
    000
  • 简单易懂,DIV+CSS架构网站的7种版面布局形式,一语道破

    下面是我给大家整理的div+css架构网站的7种版面布局形式,有兴趣的同学可以去看看。 1.“T”结构布局形式。所谓“T”结构,就是指页面顶部为横条网站标志+广告条,下方左面为主菜单,右面显示内容的布局,整体效果类似英文字母“T”,所以称之为“T,形布局。这是网页设计中用得最广泛的一种布局方式。这种…

    好文分享 2025年12月24日
    000
  • 详细为你讲解,DIV+CSS布局和TABLE布局的优缺点(经典)

    table布局是web早期css不存在的时候兴起的,是对table标签的不正规使用,table标签就是表格,是用来显示数据的,而不是用来布局网页的,虽然它有时候布局网页很简单。现在绝大多数的网站都是用div+css布局。这两种布局各有各的优点。 一、div+css布局的好处: 1.符合W3C标准,代…

    好文分享 2025年12月24日
    000
  • css属性相对定位,绝对定位,固定定位

    这篇文章主要介绍了关于css属性相对定位,绝对定位,固定定位,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 定位 1. 相对定位(position:relative) 即相对于自己原先的位置定位,当盒子移动之后,原先的位置依然在存在2. 绝对定位(position:absolute)…

    好文分享 2025年12月24日
    000
  • css实现鼠标移入移出动态效果

    这篇文章主要介绍了关于css实现鼠标移入移出动态效果,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下 知识点:transform-origin 兼容性:IE10以上 p { position: absolute; width: 200px; height: 60px; text-ali…

    好文分享 2025年12月24日
    000

发表回复

登录后才能评论
关注微信