纯CSS实现移动端常见布局——高度和宽度挂钩的秘密

纯CSS实现移动端常见布局——高度和宽度挂钩的秘密

不踩坑不回头.之前我在一个项目中大量使用css3的calc计算属性.写代码的时候真心不要太爽啊…可是在项目上线之后,才让我崩溃了,原因非常easy,在低于安卓4.4的版本号的手机上,自带的浏览器是不支持这个属性的.

好吧,这还不时最坑爹的,在国产的猎豹浏览器以及其它一些浏览器里面,有可能也不支持.总而言之,这个坑踩大了.只是没关系,大部分的常见布局问题,我都能解决掉.可是,以下这个….我真心有点费解.只是,没关系,通过我的研究,终于还是非常快用CSS攻克了.

须要的效果,例如以下图:

需求分析

看图,事实上非常easy.假设宽度是固定的,那么这个布局就不要太简单了.

问题是,设备的宽度是不固定的哦,那么问题就是,在不知道详细宽度的时候,怎样来设定它相应的高度呢?

也就是说,怎样在CSS中,找到一个高度和宽度挂钩的属性.仅仅要存在这个參数,那么,问题就能解决.

那么有没有这个參数呢?

有的.那就是padding

代码实践

普通情况下,是想不起来padding有这个特性的.只是,想起来了,那么这个问题就迎刃而解了,看代码吧.

HTML结构

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
</head>
<body>
    <div class="box1"></div>
    <div class="box2"></div>
    <div class="box3"></div>
</body>
</html>

CSS代码

* {margin: 0;padding: 0;}
.box1 {width: 50%;padding-bottom: 50%;float: left;background: #123;}
.box2 {width: 50%;padding-bottom: 25%;float: right;background: #234;}
.box3 {width: 50%;padding-bottom: 25%;float: right;background: #345;}

总结

对于常见的CSS參数,你可能非常难知道里面的一些好玩的东西,或者看到了也熟视无睹.

在我们遇到一些问题的时候,尤其是布局这样的问题,我们要考虑的是,能不能用CSS解决,而不时一位的去考虑JS.毕竟,JS是用来交互的,而CSS是用来布局的.

FungLeo原创,转载请保留版本号申明,以及首发地址:http://blog.csdn.net/fungleo/article/details/50811589

时间: 2024-10-13 23:00:41

纯CSS实现移动端常见布局——高度和宽度挂钩的秘密的相关文章

pc端常见布局---垂直居中布局 单元素定高

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>常见元素布局</title> <style type="text/css"> /* 一.垂直居中布局 */ /* 1.单个元素垂直居中 高度固定 缺点:用到定位,脱离文档流*/ .content { position: relative; height: 100px

0076 移动端常见布局(简短)

1.移动端单独制作 流式布局(百分比布局) flex 弹性布局(强烈推荐) less+rem+媒体查询布局 混合布局 2.响应式 媒体查询 bootstarp 流式布局: 流式布局,就是百分比布局,也称非固定像素布局. 通过盒子的宽度设置成百分比来根据屏幕的宽度来进行伸缩,不受固定像素的限制,内容向两侧填充. 流式布局方式是移动web开发使用的比较常见的布局方式. demo:流式布局 <!DOCTYPE html> <html lang="en"> <he

纯css实现慕课网的布局

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>慕课网首页</title> <script type="text/javascript" src="js/myfocus-2.0.1.min.js"></script> <script typ

使用CSS实现三栏自适应布局(两边宽度固定,中间自适应)

来源:http://blog.csdn.net/cinderella_hou/article/details/52156333 所谓三列自适应布局指的是两边定宽,中间block宽度自适应.这道题在今年网易内推前端工程师面试的时候也被问到. 我这里主要分为两大类,一类是基于position传统的实现,一类是基于css3新特性弹性盒模型布局实现. 1. 基于传统的position和margin等属性进行布局 这里也分为三种方法,分别为绝对定位法,圣杯布局,自身浮动法. 1).绝对定位法 绝对定位法原

(转转转)使用CSS实现三栏自适应布局(两边宽度固定,中间自适应)

所谓三列自适应布局指的是两边定宽,中间block宽度自适应.这道题在今年网易内推前端工程师面试的时候也被问到. 我这里主要分为两大类,一类是基于position传统的实现,一类是基于CSS3新特性弹性盒模型布局实现. 1. 基于传统的position和margin等属性进行布局 这里也分为三种方法,分别为绝对定位法,圣杯布局,自身浮动法. 1).绝对定位法 绝对定位法原理是将左右两边使用absolute定位,因为绝对定位使其脱离文档流,后面的center会自然流动到他们上面,然后使用margin

简单而兼容性好的Web自适应高度布局,纯CSS

纯CSS实现的自适应高度布局,中间内容不符自动滚动条.兼容IE9以上.chrome.FF.关键属性是box-sizing: border-box. 不废话,直接上代码: <!doctype html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <style> *{padding:0;margin:

纯CSS无hacks的跨游览器多列布局

利用纯CSS创建一个等高多列的布局并不件易事,本教程将着重分析出现在多列布局的多个问题,然后为大家等来一个简单全游览器通吃的解决方法,不使用图片,脚本,CSS hacks并在最严格的XHTML 规范中都能通过验证. 问题的症结所在 如上图所示,由于各列的内容不一致导致其背景的高度也不统一.而背景实质上是内容(标准的盒子模型是由内容区,补白区,边框区与边界区组成,背景存在于前三者中:IE为前两者)的自适应的问题.再转化一下,如何撑大那些较短的列的高度,让所有列的高度等于最高的列的高度?这个,的确很

CSS常见布局问题整理

实现div的水平居中和垂直居中 多元素水平居中 实现栅格化布局 1. 实现div的水平居中和垂直居中 实现效果: 这大概是最经典的一个题目了,所以放在第一个. 方法有好多, 一一列来 主要思路其实就是 使用position,相对父元素做绝对定位(设置百分比[由父元素宽高调节子元素大小]/设置margin和相对位置(确定宽高)) 使用flex属性 使用tranfrom做相对位移的调节 1) 只适用: 宽高已定 设置position: absolute(父元素记得设置: relative), 然后t

纯CSS实现侧边栏/分栏高度自动相等

by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=694 一.为何要分栏高度一致? 分栏高度一致的目的是更加美观.举两个例子吧. ① 对于分栏布局,我们或许会用边框(border)进行分隔,就如鄙人博客的分栏: 此时最担心的问题就是高度不一致,尤其是无边框属性的分栏高度超过有边框属性的分栏,结果就会: 虽然我们可以使用min-height或是边框重叠技术进行适当修复,但是