页面架构(笔记1)——水平居中布局

需求要求:

1.子容器相对父容器水平居中

2,子容器与父容器的自身宽度都是自适应的

解决方案一(inline-block+text-align)

<style type="text/css">
    body{margin:20px;}

    .parent{
        text-align: center;
    }
    .child{
        display: inline-block;
    }
</style>
<body>
<div class="parent">
    <div class="child">DEMO</div>
</div>
</body>
要点:
display: inline-block; 特点:宽度根据内容来,
text-align: center 特点:对inline元素起作用
方案一优点:兼容性好,
缺点: 1.因为父元素上设置了text-align:center,所以子元素会继承过来,导致子元素的文字和容器一起居中,解决办法:增加.child{text-align:left;}
2.Ie6.7不兼容inline-block,需要加上display:inline; zoom:1;来兼容
 

解决方案二(table+margin)

<style type="text/css">
    body{margin:20px;}

    .child{
        display: table;
        margin: 0 auto;
    }
</style>
<div class="parent">
    <div class="child">DEMO</div>
</div>
要点:
display: table; 特点:table类似block元素,并且宽度也是根据内容走.
方案二优点:只需要设置.child的样式,不用去考虑parent上的样式,支持Ie8+
缺点:Ie6,7不支持display:table,我们可以吧html部分的结构换成table的结构,就可以兼容到了。

解决方案三(absolute+transform)

<style type="text/css">
    body{margin:20px;}

    .parent{height:1.5em;}
    .parent{
        position: relative;
    }
    .child{
        position: absolute;
        left: 50%;
        transform: translateX(-50%);<!--左移自身宽度的一半-->
    }
</style>
</head>
<body>
<div class="parent">
    <div class="child">DEMO</div>
</div>
</body>
要点:
 position: absolute特点:宽度也是根据内容走 
方案二优点:absolute脱离文档流,不会对其他元素产生影响,
缺点:transform:不支持Ie6,7,8,兼容性达不到要求

解决方案四(flex+justify-content)

<style type="text/css">
    body{margin:20px;}

    .parent{
        display: flex;
        justify-content: center;
    }
<!--如果不用justify-content,可以在子元素上设置-->
    .child{
        margin: 0 auto;
    }
</style>
<body>
<div class="parent">
    <div class="child">DEMO</div>
</div>
</body>
要点:
在.parent设置display: flex; ,它的子元素.child就成为了flex item,默认情况为宽度为auto, 
方案二优点:只需要设置parent节点就可以了,child不需要去设置
缺点:flex不支持Ie6,7,8,兼容性达不到要求
时间: 2024-10-10 15:14:24

页面架构(笔记1)——水平居中布局的相关文章

前端开发工程师 - 04.页面架构 - CSS Reset &amp; 布局解决方案 &amp; 响应式 &amp; 页面优化 &amp;规范与模块化

04.页面架构 第1章--CSS Reset 第2章--布局解决方案 居中布局 多列布局 全屏布局 第3章--响应式 浏览网页使用的设备屏幕大小迥异,如何保证页面在不同设备上都正常显示呢? --  解决方法:响应式 优点:无需为不同设备编写对应的页面 --> 降低开发成本.维护成本 缺点:页面中某些部分在某些设备上会被隐藏(资源加载了,但是只是用CSS隐藏了) 为什么在手机端的页面会很小呢? 所有的移动端的页面都引入了viewport视窗 刚开始所有的元素都是加载到一个比较大的viewport视

《页面架构》课堂交流区问题汇总

本课程为网易云课堂 - - 前端开发工程师 - - <页面架构>学习总结 居中布局 问题一:水平列表的底部对齐 如图所示,一个水平排列的列表,每项高度都未知,但要求底部对齐,有哪些方法可以解决呢? ???? 解决方案: 方法一:子元素设置:display:inline-block + vertical-align:bottom <!DOCTYPE html> <html> <head> <meta charset="utf-8"&g

大型网站技术架构 笔记

大型网站架构演化 特点: 高并发.大流量 高可用 海量数据 用户分布广泛.网络情况复杂 安全环境恶劣 需求快速变更.发布频繁 渐进式开发 演化发展历程 0. 演变原因 在现有架构下,我们来看看数据存储的瓶颈是什么? 数据量的总大小  一个机器放不下 数据的索引(B+ Tree)一个机器的内存放不下 访问量(读写混合)一个实例不能承受 只有当以上3件事情任何一件或多件满足时,我们才需要考虑往下一级演变. 1. 初始阶段: 应用程序.数据库.文件都在一台服务器,如常用的Linux+PHP+Apach

浅谈HTML5单页面架构(二)——backbone + requirejs + zepto + underscore

本文转载自:http://www.cnblogs.com/kenkofox/p/4648472.html 上一篇<浅谈HTML5单页面架构(一)——requirejs + angular + angular-route>探讨了angular+requirejs的一个简单架构,这一篇继续来看看backbone如何跟requirejs结合. 相同地,项目架构好与坏不是说用了多少牛逼的框架,而是怎么合理利用框架,让项目开发更流畅,代码更容易管理.那么带着这个目的,我们来继续探讨backbone. 首

浅谈HTML5单页面架构(一)——requirejs + angular + angular-route

本文转载自:http://www.cnblogs.com/kenkofox/p/4643760.html 心血来潮,打算结合实际开发的经验,浅谈一下HTML5单页面App或网页的架构. 众所周知,现在移动Webapp越来越多,例如天猫.京东.国美这些都是很好的例子.而在Webapp中,又要数单页面架构体验最好,更像原生app.简单来说,单页面App不需要频繁切换网页,可以局部刷新,整个加载流畅度会好很多. 废话就不多说了,直接到正题吧,浅谈一下我自己理解的几种单页面架构: 1.requirejs

【安卓笔记】抽屉式布局----DrawerLayout

效果如下: DrawerLayout来自support.v4包,所以不用考虑兼容性问题.其次,这种布局类似风靡一时的侧滑菜单,但是比侧滑菜单轻巧许多. 下面介绍这种布局的使用方式. 1.在你的项目中导入support.v4包. 2.编辑一个布局,根节点为android.support.v4.widget.DrawerLayout,此节点下只允许有两个子节点,第一个为将来主页面的内容,第二个节点即为"抽屉"内容,通常是一个ListView.比如: <android.support.

html文档页面重绘和重新布局

当浏览器下载完所有页面HTML 标记,JavaScript,CSS,图片之后,它解析文件并创建两个内部数据结构:一棵DOM树表示页面结构,一棵渲染树表示DOM节点如何显示. 在对html页面的操作过程中会改变页面的结构或者页面的外观或者同时改变页面的结构和外观.在过程中,文档可见外观改变很小(如:改变了某些元素的颜色,或者改变了某些元素的可见性,但这种改变不会影响到页面的布局),这种行为称为“重绘”,也就是浏览器对文档进行了重新绘制.如果页面外观发生了显著变化并且影响到文档的实际布局(如一个<d

AngularJS进阶(二十五)requirejs + angular + angular-route 浅谈HTML5单页面架构

requirejs + angular + angular-route 浅谈HTML5单页面架构 众所周知,现在移动Webapp越来越多,例如天猫.京东.国美这些都是很好的例子.而在Webapp中,又要数单页面架构体验最好,更像原生app.简单来说,单页面App不需要频繁切换网页,可以局部刷新,整个加载流畅度会好很多. 废话就不多说了,直接到正题吧,浅谈一下我自己理解的几种单页面架构: 1.requirejs+angular+angular-route(+zepto) 最后这个zepto可有可无

页面架构

使用Axure设计App,使用WebStorm开发 – 构建页面架构 在本文中,将继续介绍在 WebStorm 中开发,去实现App的功能需求. 就像盖房子一样,第一步需要把整个工程的页面结构先勾勒出来,先让各个页面流转起来,然后再去细化每个页面. 所有工程代码放在了 https://github.com/zhangsichu/DeliveryApp 同时上篇文章中创建的初始化工程,也Tag了 TheInitialProject,您可以使用 Git checkout 这个Tag, 也可以直接到:

WPF笔记(1.4 布局)——Hello,WPF!

原文:WPF笔记(1.4 布局)--Hello,WPF! 这一节只是第2章的引子.布局要使用Panel控件,有四种Panel,如下:DockPanel,就是设置停靠位置布局模型.StackPanel,提供一个从左至右或从上至下放置内容的堆栈模型.Grid,提供一个允许进行 行/网格定位的模型.可使用表格.Canvas,可精确定位. 其中,Grid是最常用的,vs2005自动生成的Page和window都默认带有这个标签: Example 1-25. A sample usage of the G