2019独角兽企业重金招聘Python工程师标准>>>

CSS实现自适应浏览器宽度的正方形有以下三种方法:

1、方案一:CSS3 vw 单位

CSS3 中新增了一组相对于可视区域百分比的长度单位vw、vh、vmin、vmax。其中vw是相对于视口宽度百分比的单位,1vw = 1% viewport width,vh是相对于视口高度百分比的单位,1vh = 1% viewport height;vmin是相对当前视口宽高中较小的一个的百分比单位,同理 vmax是相对当前视口宽高中较大的一个的百分比单位。

  1. #square{
  2. width:30%;
  3. height:30vw;
  4. background:red;
  5. }

类比:纯CSS实现自适应浏览器高度的正方形只需要设置width的单位为vh即可。

优点:简洁方便。

缺点:浏览器兼容不好。

2、方案二:设置垂直方向的padding撑开容器

由于margin, padding 的百分比数值是相对父元素的宽度计算的,只需将元素垂直方向的一个padding值设定为与width相同的百分比就可以制作出自适应正方形了。

但要注意,仅仅设置padding-bottom是不够的,若向容器添加内容,内容会占据一定高度,为了解决这个问题,需要设置height: 0。

  1. #square{
  2. width:30%;
  3. height:0;
  4. padding-bottom: 30%;
  5. background:red;
  6. }

优点:简洁明了,且兼容性好。

缺点:会导致在元素上设置的max-width属性失效(max-height不收缩)。

3、利用伪元素的 margin(padding)-top 撑开容器

max-width属性失效的原因是:max-width属性只限制于width,也就是只会对元素的 content width起作用。

解决方法是:用一个子元素撑开content部分的高度,从而使max-height属性生效。

首先需要设置伪元素,其内容为空,margin-top设置为100%。

但要注意,若使用垂直方向上的margin撑开父元素,仅仅设置伪元素是不够的,这涉及到margin collapse外边距合并的概念,由于容器与伪元素在垂直方向发生了外边距合并,所以撑开父元素高度并没有出现,解决方法是在父元素上触发BFC:设置overflow:hidden。

  1. #square{
  2. width:30%;
  3. background:red;
  4. overflow:hidden;
  5. max-width:200px;
  6. }
  7. #square:after{
  8. content: '';
  9. display: block;
  10. margin-top:100%;
  11. }

若使用垂直方向上的padding撑开父元素,则不需要触发BFC。

  1. #square{
  2. width:30%;
  3. background:red;
  4. max-width:200px;
  5. }
  6. #square:after{
  7. content: '';
  8. display: block;
  9. padding-top:100%;
  10. }

注:以上方法都是相对视口宽度自适应的正方形。如果需求是制作相对视口高度自适应的正方形,估计就只能使用 vh 单位了吧~

转载于:https://my.oschina.net/u/3219445/blog/1580769

CSS实现自适应浏览器宽度的正方形相关推荐

  1. Css实现自适应屏幕宽度的正方形

    思路,正方形,长宽都一样,需要找到一个标准值然后再去设置盒子模型,可以用padding,margin, width/height, 正题开始 1. 使用padding,原因,百分比是基于父元素的宽度, ...

  2. css图片自适应浏览器宽度

    .logo img { width: auto; display: block; margin: 0 auto; max-width: 100%; 100% ? "100%" : ...

  3. php自适应浏览器,css如何自适应浏览器

    css自适应浏览器的设置方法:首先打开相应的代码文件:然后使用js代码" jQuery(window).resize(function(){...}"实现内容自适应浏览器宽度或者高 ...

  4. vue木桶布局(图片自适应浏览器宽度排列)的实现方法

    先上效果: 基本实现思路: 监听浏览器的resize事件,实时获取到浏览器宽度 设置一个图片的基础高度(例如300px),以此为基准把图片都缩放到这个高度 把图片依次加入同一行,如果宽度超过浏览器宽度 ...

  5. css如何自适应浏览器的高度,div css 高度 宽度 自适应浏览器 屏幕大小

    DIV布局--IT北瓜原创 html,body{ font: 100% 微软雅黑, 宋体, 新宋体; margin: 0; /* 最好将 body 元素的边距和填充设置为 0 以覆盖不同的浏览器默认值 ...

  6. html css div自适应屏幕宽度,高度

    做C/S项目其实最让人蛋疼的无非就是兼容问题,各种浏览器的不兼容外还有div+css不科学的显示问题.所以针对div+css窗口最大化.缩小的自适应加以解决. [html] view plain co ...

  7. html css高度自适应浏览器高度,Div + CSS高度自适应解决方法_html/css_WEB-ITnose

    转 这几天用div+css写网站,样子 上中下,中间是个左中右3列,可这3列不是等高偏巧有不同颜色的背景,结果就是ie.firefox...这些浏览器无一例外的现实的效果都是长短不齐,如何让这3列可以 ...

  8. css 图片大小自适应div,CSS 图片自适应显示宽度

    这个使用尤其中手机屏幕上最有用. 有喜欢方法: function ReImgSize(){ for (j=0;j { document.images[j].width=(document.images ...

  9. CSS文字自适应div宽度

    1.文字自适应宽度 <body><div class="box"><div>大风起兮云飞扬</div><div>安得猛士 ...

最新文章

  1. python基础语法手册format-Python-输出格式化format()方法的基本使用(2)
  2. Magicodes.WeiChat——媒体资源选择组件之media-choice(开源)
  3. 在Visual Studio设置隐藏cmd,GTK程序有效
  4. 微信公众号开发 [03] 结合UEditor实现图文消息群发功能
  5. PMP - 2011年6月考前辅导班
  6. python对excel操作简书_Python读写Excel表格,就是这么简单粗暴又好用
  7. 2011年上半年软考成绩查询网站,祝贺自己顺利通过2011年系统分析师考试!
  8. C++提高部分_C++普通函数与函数模板的区别---C++语言工作笔记084
  9. linux redis客户端怎么使用,linux 下安装redis并用QT写客户端程序进行连接
  10. Centos7完全卸载MySQL 安装 启动
  11. Ubuntu无盘工作站安装详细步骤
  12. heic格式转化jpg方法
  13. openg es egl笔记
  14. 人工智能在肿瘤成像中的临床挑战和应用
  15. 中望3d快捷键命令大全_中望3D快捷键设置
  16. 火车采集器采集多页内容的抓取方法
  17. SHAMANIC Heil Amazonas-DschungelSHAMA
  18. 电视端虚拟鼠标的设计
  19. Navicat-数据库的连接以及使用
  20. 无为无欲、与世无争,也就没有烦恼......

热门文章

  1. 脑机接口猴子通过“意念”打游戏!马斯克:未来能让瘫痪者用意念玩手机
  2. 关于比特币,人民日报发话了!
  3. 一个诡异的循环:意识何以意识到意识自身?
  4. 成长与迁移,全球半导体格局演变
  5. 前沿科技山雨欲来,四大领域存创新机会
  6. 一文看懂NB-IoT!
  7. 2018 年最值得期待的学术进展——致人工智能研究者们的年终总结
  8. 「自然语言处理」如何快速理解?有这篇文章就够了!
  9. 2021 年度热门技术书单提前公开,这些好书藏不住了
  10. 一周内咸鱼疯转 2.4W 次,最终被所有大厂封杀!