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

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

目标:

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

一、思考如何实现

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

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

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

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

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

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

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

HTML代码:

@@##@@

css代码:

*{    margin:0;    padding:0}.box{    width:100%;    height:51.5vw}.box img{     width:100%; }

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

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

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

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

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

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

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

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

HTML代码:

我是王平安,pingan8787

css代码:

.box{    width: 200px;}.text{    padding: 10%;}

25491da44dc799ec34c7ddac107ef5d.png

分析:

这里我们将父容器 .box 宽度设置为 200px ,子元素 .text 的 padding:10% ,因此 .box 的 padding 计算结果为 20px ;

接下来结合主题,我们利用这个原理,来实现等比例的问题:

HTML代码:

@@##@@

css代码:

.box{    width: 100%;}.text{    overflow: hidden;    height: 0;    padding-bottom: 51.5%;}.box .text img{    width: 100%;}

这里 .text 的 padding-bottom: 51.5%; 也是按照第一个方法,用图片原始尺寸的宽高比计算出来的,需要注意,这里将 .text 设置 height: 0; 会出现高度比实际高的问题,因此为了避免这个情况,就需要设置 height: 0; 。

相关视频教程推荐:css视频教程

419fa51a533fd4bd28e47da8a7498f0.pngcss如何实现一个自适应容器

以上就是css如何实现一个自适应容器的详细内容,更多请关注创想鸟其它相关文章!

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 04:39:06
下一篇 2025年12月24日 04:39:17

相关推荐

  • 详解css行内样式、内嵌样式与外部引用样式的使用方法

    三中的使用方法的简单实例如下: 行内样式: css行内样式> (推荐教程:CSS教程) 内嵌样式: css内嵌样式#div{width:100px;height:100px;background:red;}> 外部式: 立即学习“前端免费学习笔记(深入)”; css内嵌样式 > c…

    2025年12月24日
    000
  • css中有哪些方法可以实现垂直居中

    css实现垂直居中的方法如下: 1、利用line-height实现居中,这种方法适合纯文字类的; .parents { height: 400px; line-height: 400px; width: 400px; border: 1px solid red; text-align: center…

    2025年12月24日 好文分享
    000
  • css实现等高布局有哪些方式

    什么是等高布局? 指在同一个父容器中,子元素高度相等的布局。 从等高布局实现方式来说分为两类: 1、伪等高 子元素高度差依然存在,只是视觉上给人感觉就是等高。 立即学习“前端免费学习笔记(深入)”; 2、真等高 子元素高度相等。 伪等高实现方式: 通过负margin和Padding实现 真等高实现方…

    2025年12月24日
    000
  • css如何使用伪元素清除浮动

    什么是bfc? 块级格式化上下文,是一个独立的渲染区域,让处于 BFC 内部的元素与外部的元素相互隔离,使内外元素的定位不会相互影响。 我们先了解一个名词:BFC(block formatting context),中文为“块级格式化上下文”。 先记住一个原则:  如果一个元素具有BFC,那么内部元…

    2025年12月24日
    000
  • css中内容过长怎么解决

    大家在写css的时候,肯定有过忘记设计里面存在的临界的情况。举个例子来说吧,当内容的长度超过了我们的期望值,我们也无法解释其中的可能性,页面的设计很可能会因此而崩掉。我们不能保证css总是会按照我们期望的那样工作,但至少我们可以用不同类型的内容来测试,以减少这种情况的发生。 具体情况如下: 一个右侧…

    2025年12月24日
    000
  • 关于css中的类名问题的详细介绍

    以下以数字开头的 css 类名不会生效: .1st{ color: red;} 一个合法的 CSS 类名必需以下面其中之一作为开头: 1、下划线 _ 2、短横线 – 3、字母 a – z 立即学习“前端免费学习笔记(深入)”; 然后紧跟其他 _ , – 数字或字母…

    2025年12月24日
    000
  • css实现文本两端对齐的方法

    本篇文章介绍了使用css实现文本两端对齐的效果,具有一定的参考价值,感兴趣的朋友可以看看。 css实现文本两端对齐的方法 说起text-align,大家一定都不觉得陌生,我们常用关键字left、right、center实现行内元素相对父元素左、右、居中对齐,当然我们也使用justify来实现文本两端…

    2025年12月24日
    000
  • 如何改变css伪元素的样式

    本篇文章介绍了如何改变css伪元素样式的方法,希望对学习前端css的朋友有帮助! 一、CSS伪元素 CSS 伪元素用于向某些选择器设置特殊效果。 伪元素的用法如下: selector:pseudo-element {property:value;} CSS 类也可以和伪元素搭配使用 selector…

    2025年12月24日
    000
  • css实现文字过长显示省略号

    本篇文章介绍了css实现文字过长显示省略号的方法,具有一定的参考价值,希望对学习css的朋友有帮助! 一、CSS样式 解决文字过长显示省略号问题 1、一般样式 一般 css 样式,当宽度不够时,可能会出现换行的效果。这样的效果在某些时候肯定是不行的,可以修改 css 样式来解决这个问题。 text-…

    2025年12月24日 好文分享
    000
  • css制作轮播图

    下面是style部分: *{margin:0;padding:0;} a{text-decoration:none} li{list-style:none;} 设计宽度不要超过轮播图片的总宽度,再加上第一张图片的宽度(加第一张图片的宽度是为了轮播效果看得见)我的是1500宽度和200的高度,再设置溢…

    2025年12月24日
    000
  • 给你的网页弹窗加个遮罩

    本篇文章为你介绍使用css实现网页遮罩效果,主要是通过控制两个盒子的显示层级,控制遮罩层的背景色和显示透明度来达到遮罩效果。希望对学习css的朋友有帮助。 给你的弹窗加个遮罩 遮罩层效果相信是许多开发需求时候经常会碰到的一个情况,实现遮罩层效果的方式有很多种,下面介绍最简单的一种,利用CSS来实现遮…

    2025年12月24日
    000
  • css如何清除浮动

    1、给父级元素设置高度 效果图: 代码: * { padding: 0; margin: 0; } .header { height: 30px; line-height: 30px; background-color: #333; } .header a { color: #fff; text-d…

    2025年12月24日 好文分享
    000
  • 关于CSS中display:flex与inline-flex属性的详细介绍

    flex介绍 Flex是Flexible Box的缩写,意为”弹性布局”,用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为Flex布局。 flex: 将对象作为弹性伸缩盒显示 inline-flex:将对象作为内联块级弹性伸缩盒显示 (推荐学习教程:CSS教程) 立即…

    2025年12月24日
    000
  • css如何清除默认样式并设置公共样式

    通常的清除默认样式: *{ margin:0; padding:0}li{ list-style:none}img{ vertical-align:top; border:none} (推荐教程:CSS教程) 设置默认字体 body,button, input, select, textarea /…

    2025年12月24日
    000
  • css如何实现流程导航效果?有哪几种方法?

    方法一:利用裁剪(该方法ie下不支持) 利用裁剪 clip-path: polygon(),直接画出一个三角 唯一一点需要算出大致百分比就可以画出来   .nav-box { display: flex; list-style: none; font-size: 14px; } .nav-box l…

    2025年12月24日
    000
  • css如何实现图片抽屉式效果

    首先,我们来看一下效果: 这个效果实现原理很简单:只要你掌握css3动画和过渡相关知识就行,不用js代码; (推荐教程:CSS入门教程) HTML代码: 立即学习“前端免费学习笔记(深入)”; 国际美妆抢先看 @@##@@ 女神标准大讨论 @@##@@ 吃货也能越吃越瘦 @@##@@ 连衣裙抢头条 …

    2025年12月24日
    000
  • css如何进行空格处理

    white-space 属性 CSS 提供了一个white-space属性,可以提供更精确一点的空格处理方式。该属性共有六个值,除了一个通用的inherit(继承父元素),下面依次介绍剩下的五个值。 1、white-space: normal white-space属性的默认值为normal,表示浏…

    2025年12月24日
    000
  • css如何实现始终将footer固定在底部

    目标: 把 footer 区固定在底部,无论页面高度多宽,它始终在底部不会变,就像移动端的菜单一样。 (推荐教程:CSS入门教程) 实例: document #demo{ position: fixed; left: 0px; bottom: 0px; width: 100%; height: 50…

    2025年12月24日
    000
  • CSS定位怎么理解?

    CSS 定位 (Positioning) 属性允许你对元素进行定位。 CSS 定位和浮动 CSS 为定位和浮动提供了一些属性,利用这些属性,可以建立列式布局,将布局的一部分与另一部分重叠,还可以完成多年来通常需要使用多个表格才能完成的任务。      ( 推荐学习:CSS入门教程 ) 定位的基本思想…

    2025年12月24日
    000
  • CSS外边距如何定义

    围绕在元素边框的空白区域是外边距。设置外边距会在元素外创建额外的“空白”。 设置外边距的最简单的方法就是使用 margin 属性,这个属性接受任何长度单位、百分数值甚至负值。 CSS margin 属性                                         ( 推荐学习:C…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信