您现在的位置是:网站首页> 编程资料编程资料
实例讲解如何使用CSS保持页面内容宽高比CSS 实现div宽度根据内容自适应 CSS实现菜单背景自适应宽度的方法CSS基于单张背景图实现自适应宽度的圆角菜单效果代码CSS实现自适应宽度的菜单按钮效果代码CSS中固定宽度布局的详细教程CSS中的line-height行高属性的使用技巧小结CSS中行高line-height属性的一些使用技巧CSS 控制Html页面高度导致抖动问题的原因css属性行高line-height的用法详解不定宽高div内图片垂直居中的css样式
2021-09-05
961人已围观
简介 这篇文章主要介绍了如何使用CSS保持页面内容宽高比的方法,作者举了伪元素和vw单元等不同方法下的例子,需要的朋友可以参考下
需求描述:移动端实现横跨页面半圆。(类似问题,实现4x4的正方形网格)
简化问题,我们可以理解为实现一个高度和宽度比为1:2的块。
需要解决问题:
1,高度和宽度按照一定比例。
2,外容器高度和宽度不确定。
3,尽量不使用图片和脚本替代。
4,兼容移动端。
编写html
- <div class = "semicircle">div>
思考一,使用height:100%,
- body{
- margin:0;
- width: 100%;
- background: lightblue;
- }
- .semicircle {
- width: 100%;
- height: 100%;
- border-top:5px solid #fff;
- border-radius: 100%;
- }
存在问题,height的百分比是根据父容器计算的,不是当前容器,根本满足不了我们的需求。效果如下:
父容器body的高度百分比为其子容器所填充的高度关联,即便设置body高度100%,由于子容器即semicircle所填充的实际高度为边界的5,无法将父容器“全部撑开”,因此无法通过设定父容器的高度为百分比指定宽高按照一定比例的容器。
思考二,设定padding-top或padding-bottom为100%
The percentage is calculated with respect to the width of the generated box's containing block [...] (source: w3.org, emphasis mine)
百分比宽度的计算与所生成盒子的包含块宽度有关。padding-top、padding-bottom的百分比是根据父容器的width(宽度)计算的,而不是height(高度)。其他比例实现对照表
aspect ratio | padding-bottom value |
---|---|
16:9 | 56.25% |
4:3 | 75% |
3:2 | 66.66% |
8:5 | 62.5% |
- body{
- margin:0;
- width: 100%;
- background: lightblue;
- }
- .semicircle {
- width: 100%;
- height: 0;
- padding-bottom: 100%;
- border-top:5px solid #fff;
- border-radius: 100%;
- }
思考三,使用vw单元
使用vw单元设定元素高度和宽度,vm的大小是通过viewport的宽度设定的,因此可以通过该方法保持容器按照一定比例显示。一单位的vw等于百分之一的viewport宽度,即100vw等于100%viewport宽度。
- body{
- margin:0;
- width: 100%;
- background: lightblue;
- }
- .semicircle {
- width: 100vw;
- height:100vw;
- border-top:5px solid #fff;
- border-radius: 100%;
- }
对照表
aspect ratio | multiply width by |
---|---|
1:1 | 1 |
1:3 | 3 |
4:3 | 0.75 |
16:9 | 0.5625 |
思考四,使用伪元素和inline-block布局
- body {
- width: 100%;
- font-size: 0;
- text-align: center;
- background: lightblue;
- }
- .semicircle {
- border-top:5px solid #fff;
- border-radius: 100%;
- }
- .semicircle:before {
- content:"";
- display: inline-block;
- padding-bottom: 100%;
- }
虽然代码有点复杂,但是灵活性强,可以实现更多类似的效果。
当需求改成实现一个横跨屏幕80%的宽度的半圆,我们只需要在.semicircle中添加属性width:80%;,顺便也把容器居中实现了。
该方法的原理很清晰:
参考思考一,无法通过高度100%来扩充外容器高度,那么可以通过伪元素,插入一个高度和宽度一致的元素,将容器撑开成一比一高度的容器。注意,该方法实现半圆,实际需要宽高为一比一的容器,即占用空间为上述方法的两倍。
设置:before元素边界,解析原理:
思考五,使用图片,兼容低档次移动设备。
- .semicircler img {
- width: 100%;
- background-repeat: no-repeat;
- background-size: 100% 100%;
- background-image: url(../img/autoresized-picture.jpg);
- }
使用脚本,css更加简洁明了,目标清晰。
- div.style.height=div.offsetWidth+"px";
对于实现2*2正方形网格
- *------main code-------*/
- body {
- width: 100%;
- margin:0;
- text-align: center;
- }
- div{
- display: inline-block;
- width: 50%;
- background: lightblue;
- font-size: 12px;
- position: relative;
- vertical-align: middle;
- }
- div:before {
- content:"";
- display: inline-block;
- padding-bottom: 100%;
- vertical-align: middle;
- }
- /*------other code-------*/
- div:nth-child(2),div:nth-child(3){
- background: pink;
- }
- span {
- display: inline-block;
- vertical-align: middle; 提示:
本文由神整理自网络,如有侵权请联系本站删除!
本站声明:
1、本站所有资源均来源于互联网,不保证100%完整、不提供任何技术支持;
2、本站所发布的文章以及附件仅限用于学习和研究目的;不得将用于商业或者非法用途;否则由此产生的法律后果,本站概不负责!
相关内容
- 简单总结CSS3中视窗单位Viewport的常见用法
- CSS中的line-height行高属性的使用技巧小结
- 深入解析CSS中margin属性的使用浅谈css margin重叠CSS 之margin知识点(必看)css布局之负margin妙用及其他实现CSS的margin属性在页面布局中的使用攻略细说CSS中margin属性的使用 CSS中使用负margin值来调整居中位置CSS属性探秘系列(六):margin解决margin 外边距合并问题
- CSS中边框使用负边距值的奇技淫巧简单的CSS叠加外边距示例css控制边界与边框示例(内边距、外边距使用方法)谈谈CSS的边距合并之我的理解CSS去除列表默认边距的简单方法CSS边距属性定义是用margin还是用padding的两者对比CSS外边距合并代码css 空白外边距互相叠加的解决方法CSS外边距叠加的问题,CSS教程深入浅析css3 border-image边框图像详解Css3圆角边框制作代码
- 详解CSS的结构与层叠以及格式化DIV重叠 CSS让DIV层叠 两个DIV或多个DIV顺序重叠加CSS3图片可展开扇形效果的层叠展开特效源码权重和层叠规则决定了CSS样式优先级采用CSS定位属性实现Html中DIV层叠与悬浮CSS层叠样式表的层叠是什么意思(自我理解)CSS中的属性选择符和结构化伪类CSS技术的出现实现结构与表现分离CSS样式按整洁易懂的结构组织将CSS按照层叠式结构化重新组织与构建
- 使用CSS实现图片分割效果的简单方法介绍纯CSS3圆形图片鼠标滑过背景视觉差动画特效源码CSS+JS实现带方向感的鼠标滑过图片3D动画特效源码纯HTML5+CSS3制作图片旋转基于CSS剪裁图片实现js幻灯片效果特效源码使用CSS实现中间镂空的图片遮罩效果CSS3实现的为图片添加旋转背景特效源码HTML5+CSS3实现的图片多种滤镜特效源码CSS基础教程十九之CSS图文混排,图像签名,多图拼接和图片特效 基于CSS3实现图片模糊过滤效果基于html5和css3制作炫酷网站带缩略图的图片画廊
- CSS视差滚动效果CSS的ul和li实现横向排列和去掉li的点CSS3实现滚动条动画效果代码分享CSS3实现鼠标中轮滚动树生长过程特效源码CSS怎么隐藏滚动条(三种方法)纯css3实现的圆球顺时针滚动效果源码使用CSS3来实现滚动视差效果的教程css实现图片横向排列滚动效果
- 深入解析CSS中z-index属性对层叠顺序的处理
- CSS编写时的高性能以及高维护性代码优化建议总结CSS代码编写的一些性能优化技巧总结网站性能优化之CSS无图片技术CSS优化总结——网络性能与语法性能建议 CSS 网站性能优化笔记对css性能优化的一点看法JavaScript和CSS的优化提高网站性能CSS性能优化提高css性能的方法
- CSS自定义绿色复选框按钮样式HTML+CSS实现单选框、复选框美观的样式利用CSS3实现单选框动画特效示例代码纯css3实现效果超级炫的checkbox复选框和radio单选框CSS3实例分享--超炫checkbox复选框和radio单选框CSS3实现的表单单选框、复选框特效CSS3实现复选框动画特效示例代码 使用CSS实现页面复选框的方法纯CSS实现自定义单选框和复选框功能
点击排行
本栏推荐
