返回顶部
首页 > 资讯 > 精选 >如何使用css实现实现宽高比
  • 742
分享到

如何使用css实现实现宽高比

2023-06-15 10:06:04 742人浏览 薄情痞子
摘要

这篇文章给大家分享的是有关如何使用CSS实现实现宽高比的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。实现方法:1、利用padding属性和“%”单位;2、利用padding和calc()属性;3、利用paddin

这篇文章给大家分享的是有关如何使用CSS实现实现宽高比的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

实现方法:1、利用padding属性和“%”单位;2、利用padding和calc()属性;3、利用padding属性和CSS变量;4、利用padding属性和伪元素;5、直接利用视窗单位“vw”;6、使用视窗单位配合CSS Grid布局。

教程操作环境:windows7系统、css3&&HTML5版、Dell G3电脑。

长宽比故事

长宽比在影视制作中又被称之为宽高比,指的是一个视频的宽度除以它的高度所得到的比例,通常表示为x:yx×y,其中的冒号和叉号表示中文的“比”之意。目前,在电影工业中最常被使用的是anamorphic比例(即2.39:1)。传统的4:3仍然被使用于现今的许多电视画面上,而它成功的后继规格16:9则被用于高清晰度电视或数字电视上。常见的比例:

如何使用css实现实现宽高比

有关于长宽比更多的介绍可以阅读Wiki上的Aspect ration一文。

HTML结构

使用CSS实现容器长宽比,常见的html模板结构有两种:

<div class="aspectration" data-ratio="16:9">    <div class="content"></div></div>

另外一种结构是:

<div class="aspectration" data-ratio="16:9"></div>

具体使用的时候,根据自己使用场景采用不同的结构。

CSS实现长宽比例方案

前面也提到过了,使用CSS实现长宽比方案有多种,下面简单的罗列一下这些方案。不过每种方案都不会详细介绍,因为代码非常简单,看一眼代码就能明白其中原理。

垂直方向的padding

这是最早提出的一种实现方案,主要借助的原理是利用padding-top或者padding-bottom的百分比值,实现容器长宽比。在CSS中padding-toppadding-bottom的百分比值是根据容器的width来计算的。如此一来就很好的实现了容器的长宽比。采用这种方法,需要把容器的height设置为0。而容器内容的所有元素都需要采用position:absolute,不然子元素内容都将被padding挤出容器(造成内容溢出)。

比如我们容器的长宽比是16:9,那么根据计算:100% * 9 / 16可以得到56.25%。如果你希望的是4:3,那么对应的就是100% * 3 / 4

具体的CSS代码如下:

.aspectration {    position: relative;     height: 0;     width: 100%; }.aspectration[data-ratio="16:9"] {    padding-top: 56.25%;}.aspectration[data-ratio="4:3"]{    padding-top: 75%;}

通过通配符*选择器,让其子元素的宽高和容器.aspectration一样大小:

.aspectration > * {    position: absolute;    left: 0;    top: 0;    width: 100%;    height: 100%;}

padding & calc()

这个方案采用的是paddingcalc()配合在一起使用。其实原理和第一个方案是一样的。只不过在第一个方案中,我们每次都需要对padding的值计算,如果使用calc()可以通过浏览器直接计算出padding的百分比值。

.aspectration[data-ratio="16:9"] {    padding-top: calc(100% * 9 / 16);}

padding & CSS变量

对于变量而言,以前是其他计算器语言和CSS处理器的特性,不过值得特性的是,现在也是CSS的特性。接下来的这个方案也是基于padding原理,只不过是借助于CSS变量特性,让前面的方案变得更为灵活一些。使用CSS的变量时,可以把HTML中data-ratio去掉了。换成style="--aspect-ratio:16/9",也可以是style="--aspect-ratio:1.4;"。同时也可以借助于第二个方案中的calc()。因为CSS的变量和calc()函数的结合是一种完美的结合。

.aspectration[style*="--aspect-ratio"] {    padding-top: calc(100% / (var(--aspect-ratio)));}

padding & 伪元素

前面的方案都是在.aspectration元素上使用padding值。但在CSS中,还可以使用CSS的伪元素::before::after来撑开容器。

.aspectration {    position: relative;}.aspectration:after {    content: "";    display: block;    width: 1px;    margin-left: -1px;    background-color: orange;}.aspectration[data-ratio="16:9"]:after {    padding-top: 56.25%;}.content {    width: 100%;    height: 100%;    position: absolute;    top: 0;    left: 0;}

视窗单位

CSS新特性中提供了一种新的单位vw。了解过这个单位的同学都知道,浏览器100vw表示的就是浏览器的视窗宽度(Viewport)。打个比方说,如果你的浏览器是1334px,那么对就的100vw = 1334px。这个时候也就是说1vw = 13.34px。这里的100vw也对应前面方案中的100%。这样我们就可以把前面的%单位换成vw的单位。打个比方说,16:9对应的就是100vw * 9 / 16 = 56.25vw。这个值可以用在padding-top或者padding-bottom中。但这里演示的不再是padding了,而是把这个值给height

.aspectration[data-ratio="16:9"] {    width: 100vw;    height: 56.25vw;}

上面的示例中width的值是30vw,那么对应的height值就是30vw * 9 / 16 = 16.875vw

视窗单位 & CSS Grid

这是一个很有创意的解决方案,使用的都是CSS新特性:视窗单位和CSS Grid Layout。简单说一下其中的实现原理:将容器.aspectration通过display:grid声明为一个网格容器,并且利用repeat()将容器划分为横向比例,比如16,那么每一格的宽度对应的就是100vw * 9 / 16 = 6.25vw。同样使用grid-auto-rows,将其设置的值和横向的值一样。在子元素上通过grid-columngrid-row按比例合并单元格。

.aspectration {    display: grid;    grid-template-columns: repeat(16, 6.25vw);    grid-auto-rows: 6.25vw;}.aspectration[data-ratio="16:9"] .content {    grid-column: span 16;    grid-row: span 9;}

感谢各位的阅读!关于“如何使用css实现实现宽高比”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: 如何使用css实现实现宽高比

本文链接: https://lsjlt.com/news/279550.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何使用css实现实现宽高比
    这篇文章给大家分享的是有关如何使用css实现实现宽高比的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。实现方法:1、利用padding属性和“%”单位;2、利用padding和calc()属性;3、利用paddin...
    99+
    2023-06-15
  • CSS中如何实现宽高比
    本篇内容介绍了“CSS中如何实现宽高比”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • CSS如何实现宽高等比布局
    小编给大家分享一下CSS如何实现宽高等比布局,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!宽度是高度的两倍(等比缩放)实现思路:...
    99+
    2024-04-02
  • CSS怎么实现固定宽高比
    这篇文章给大家分享的是有关CSS怎么实现固定宽高比的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、可替换元素实现固定宽高比可替换元素(如 <img> 、 <video> )和其他元素不同...
    99+
    2023-06-08
  • CSS如何实现宽高等比自适应容器
    小编给大家分享一下CSS如何实现宽高等比自适应容器,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在最近开发移动端页面,遇到这么一个情况:当页面宽度 100% 时,...
    99+
    2023-06-08
  • css如何实现高度随宽度比例变化
    这篇文章主要介绍css如何实现高度随宽度比例变化,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!【方案一:padding实现】原理:一个元素的 padding,如果值是一个百分比,那这个百分比是相对于其父元素的宽度而言...
    99+
    2023-06-08
  • HTML和CSS如何实现宽高自适应
    小编给大家分享一下HTML和CSS如何实现宽高自适应,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!宽度自适应元素宽度设置为100...
    99+
    2024-04-02
  • css如何实现比率框
    这篇文章主要介绍了css如何实现比率框,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。比率框要创建具有固有比率的框,您需要做的就是将顶部或底部填充应用于div:.contain...
    99+
    2023-06-27
  • 如何使用CSS保持页面内容宽高比
    这篇文章主要讲解了“如何使用CSS保持页面内容宽高比”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用CSS保持页面内容宽高比”吧!需求描述:移动端实现...
    99+
    2024-04-02
  • css中img不知道宽高如何实现居中
    本篇内容介绍了“css中img不知道宽高如何实现居中”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • css如何保持div等高宽比
    那么css如何实现高度height随宽度width变化保持比例不变呢?即给定可变宽度的元素,它将确保其高度以响应的方式保持成比例(即,其宽度与高度的比率保持恒定)。下面以高宽 2:1 为例,通过2种方式来实现这种效果。方式一:利用定位实现....
    99+
    2023-06-03
  • 如何使用CSS实现自适应宽度的菜单
    本文将为大家详细介绍“如何使用CSS实现自适应宽度的菜单”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“如何使用CSS实现自适应宽度的菜单”能够给你意想不到的收获,请大家跟着小...
    99+
    2024-04-02
  • ​CSS如何实现表格列宽自适用
    这篇文章主要为大家展示了“CSS如何实现表格列宽自适用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CSS如何实现表格列宽自适用”这篇文章吧。CSS:表格列宽自...
    99+
    2024-04-02
  • css如何实现一个元素高度固定宽度按比例显示效果
    这篇文章将为大家详细讲解有关css如何实现一个元素高度固定宽度按比例显示效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。解决后效果如图:红框标注的即是我在上面高度比例固定的范围内宽度自适应的效果;css...
    99+
    2023-06-08
  • CSS如何实现不定宽高的垂直水平居中
    这篇文章主要为大家展示了“CSS如何实现不定宽高的垂直水平居中”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CSS如何实现不定宽高的垂直水平居中”这篇文章吧。垂...
    99+
    2024-04-02
  • 如何在css中实现等宽布局
    本篇文章给大家分享的是有关如何在css中实现等宽布局,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、使用table-cell实现(兼容ie8)<style>&nb...
    99+
    2023-06-08
  • Android ImageView 固定宽高比例的实现方法
    Android ImageView 固定宽高比例的实现方法本文主要介绍 ImageView 固定宽高比例,方法一:设置 adjustViewBounds="true",方法二:使用 Universal-Image-Loader 图片缓存类,...
    99+
    2023-05-30
    android imageview 宽高
  • 如何使用纯CSS实现一块乐高积木
    这篇文章主要为大家展示了“如何使用纯CSS实现一块乐高积木”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用纯CSS实现一块乐高积木”这篇文章吧。   代...
    99+
    2024-04-02
  • 小程序如何实现图片宽度高度等比例缩放
    这篇文章主要介绍了小程序如何实现图片宽度高度等比例缩放,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。  开发小程序初期,很多时候,图片的显示效果,不是拉长式,就是又扁又宽,在...
    99+
    2023-06-26
  • CSS在固定宽高的div内如何实现垂直居中
    这篇文章将为大家详细讲解有关CSS在固定宽高的div内如何实现垂直居中,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。需求案例案例是这样的,一个外层div,高宽是固定的,但...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作