常见的CSS布局

各种常见的CSS布局

在工作中会经常用到很多的布局方式,这里总结一下所遇到的布局,会持续更新。

悬挂布局

这里写图片描述

实现这种布局的方式有很多,这边主要挑两个,如下:

方式一:使用浮动和块级格式化上下文特性

这种方式好处是左右两部分都会自适应。

<style type="text/css">
*{margin: 0;padding: 0;
}
.title{float: left;
}
.con{overflow: hidden;display: block;
}
</style>
<body><p><span class="title">标题</span><span class="con">内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容</span></p> 
</body>

方式二:利用父元素压缩自身内容区域

这里写图片描述
该方式并不能自适应左边的部分,也就是说左边部分必须要是一个已知的宽度,但是也有好处,好处是少使用一个DOM元素。

<style type="text/css">
*{margin: 0;padding: 0;
}
.title{float: left;
}
.con{overflow: hidden;display: block;
}
</style>
<p class="wrap1"><span class="title1">标题</span>内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容内容
</p>

原理就是父元素给了一个内边距,将自身的内容压缩,然后让title1**脱离文档流**,给title1一个负外边距定位在父元素的边框处,这样也是一个实现方式。

而对于怎么脱离文档流除了使用浮动,还可以绝对定位。为什么要脱离文档流?这个和行内格式化上下文有关,行内元素是一个接着一个排布的,如果需要左负边距的元素没有脱离文档流,那么父元素的左内边距并不能真正的挤压内容的空间,跟在title1后面的元素还是会跟在title1后面,即使父元素有了左内边距。

总结:其实这个悬挂布局从本质上来说也是一个两列布局。

双飞翼布局和圣杯布局

这里写图片描述

圣杯和双飞翼布局解决的问题是相同的只是实现方式不同,都是左右两列宽度固定的三列布局的解决方案,并且保持中间一列的元素在三列中的最前方,确保浏览器能够尽量早的解析这部分内容。

圣杯布局

圣杯布局很早就被提出,下面参考的文章就是2006年写的,可以说相当古老,实现思路相对于双飞翼要难懂一点。其中有一个知识点是 margin(无论垂直还是水平方向) 百分比值是相对于父元素的width来计算的,同时padding(无论垂直还是水平方向)其实也是。

<style type="text/css">
.header{height: 50px;background: #ccc;
}
.container{overflow: hidden;padding: 0 100px; /*父元素上挤出了左右两列的空间*/
}
.center{float: left; /*必须要脱离文档流块元素才能在一样显示,三列都浮动了*/height: 200px;width: 100%;background: #999;
}
.left{float: left;margin-left: -100%; /*是相对于父元素的width的,所以是在父元素的padding-left边界处*/position: relative;right: 100px; /*在边界处还是不够的,还遮住了center,还需要向左移动自身的宽度大小的距离,这里的手段是相对定位*/width: 100px;height: 200px;background: #666;
}
.right{float: left;margin-left: -100px; /*这里应该是在父元素padding-right的边界处*/position: relative; left: 100px; /*同上还是不够,需要向右移动自身的宽度大小的距离*/width: 100px;height: 200px;background: #333;
}
.footer{height: 50px;background: #ccc;
}
</style>
<div class="header"></div>
<div class="container"><div class="center"></div><div class="left"></div><div class="right"></div>
</div>
<div class="footer"></div>

双飞翼布局

双飞翼的来历相信不介绍大家也都有所耳闻。在学习双飞翼布局的时候在网上找了很多的资料,但是也是这些资料给我造成了很大的困惑,在不明白双飞翼是什么的情况下,我看到很多文章中center部分只有一个元素(DOM结构居然和圣杯布局一样)也实现了看上去正确的三列布局,这真的很神奇。(PS:可能我写的也是不知所云,如有谬误感谢指正)

<style type="text/css">
.header{height: 50px;background: #ccc;
}
.container{overflow: hidden;  /*块级格式化上下文,来清除浮动,真正要用的时候需要.clearfix*/
}
.center{float: left;width: 100%; /*浮动之后会失去自己的宽度,所以要显示的设置宽度为100%*/height: 200px;background: #999;
}
.center-content{margin: 0 100px; /*我自身是没有浮动的宽度会充满父元素,同时父元素是100%宽,然后使用水平margin挤出左右两栏的空间,防止自身内容被覆盖*/height: 200px;
}
.left{float: left;margin-left: -100%;width: 100px;height: 200px;background: #666;
}
.right{float: left;margin-left: -100px;width: 100px;height: 200px;background: #333;
}
.footer{height: 50px;background: #ccc;
}
</style>
<div class="header"></div>
<div class="container"><div class="center"><div class="center-content"></div></div><div class="left"></div><div class="right"></div>
</div>
<div class="footer"></div>

保持更新中。。。

参考

圣杯布局

CSS布局中圣杯布局与双飞翼布局的实现思路差异在哪里?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362189.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OSCP-Kioptrix2014-2 漏洞利用

pChart 2.1.3 文件包含漏洞 搜索漏洞查看漏洞理由代码:hxxp://localhost/examples/index.php?ActionView&Script%2f..%2f..%2fetc/passwd 之前的8080端口禁止访问,看看apache的配置:http://192.168.1.78/pChart2.1.3/examples/index.php?ActionView&Script%2f..%2f..…

CodeSmith注册机,支持5.2.2和5.2.1版

CodeSmith&#xff0c;不用说了&#xff0c;大名鼎鼎的代码生成工具。最早是免费的&#xff0c;后来收费啦这个注册机是针对目前新的CodeSmith 5.2.2的&#xff0c;支持Professinal和其他版本。使用的方法&#xff1a;安装原版的试用版本&#xff0c;从官方网站下载运行试用版&…

linux epoll,poll,select

epoll函数用法&#xff0c;还有点poll和select 1&#xff0c;LT的epoll是select和poll函数的改进版。 特点是&#xff0c;读完缓冲区后&#xff0c;如果缓冲区还有内容的话&#xff0c;epoll_wait函数还会返回&#xff0c;直到把缓冲区全部读完。 2&#xff0c;ET的epoll&#…

shell学习笔记1-文件安全与权限

1&#xff0c;创建文件的用户和他所属的组拥有该文件&#xff0c;文件的属主可以设定谁具有读、写、执行该文件的权限&#xff0c;根用户可以改变任何普通用户的设置。 2&#xff0c;一个文件一经创建&#xff0c;就具有三种访问权限&#xff1a;读&#xff08;可以显示该文件的…

最新70佳单页网站设计案例欣赏(上篇)

单页网站是指只有一个页面的网站&#xff0c;这种形式的网站曾经非常流行&#xff0c;现在依然有很多人喜欢。不过&#xff0c;并不是每个网站都适合做成单页&#xff0c;一般都是内容比较少而且将来内容也不怎么增加的情况才适合这样做。如果你打算做一个这样的网站&#xff0…

Kubernetes 中文文档

Kubernetes 中文文档 如果想学习 Kubernetes 的小伙伴&#xff0c;可以参考如下文档学习&#xff1a; https://www.kubernetes.org.cn/docs 文档中详细讲解了 k8s 的设计理念&#xff0c;基本概念&#xff0c;常用命令等。 转载于:https://www.cnblogs.com/miracle-luna/p/1111…

网易原来也是个骗子

当初开通photo.163.com网易相册时&#xff0c;就是看着网易的宣传口号&#xff1a;免费而且不限容量&#xff01;结果现在坏了&#xff0c;规则说改就改&#xff0c;容量一下子收到1G&#xff0c;超过部份要么给钱&#xffe5;&#xffe5;&#xffe5;&#xffe5;&#xffe5…

不同设备屏幕尺寸和DPR适配

为什么需要适配 目前市面上设备屏幕属性十分多样化&#xff08;宽度和DPR并不一致&#xff09;&#xff0c;而作为设计和前端开发&#xff0c;无法为每个尺寸的设备单独设计一套UI并将其转为前端代码&#xff0c;这不现实。所以我们需要一套方案来将一套设计稿完美呈现在不同尺…

Edge浏览器开发人员工具

UserAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240" 本地存储/会话存储模拟达到上限 资源终于全部列表出来了 删除 Cookie 和 删除会话 Cookie 样式可以实时编辑了 …

linux 第一个内核模块Hello World

内核模块是Linux内核向外部提供的一个插口&#xff0c;其全称为动态可加载内核模块&#xff08;Loadable Kernel Module&#xff0c;LKM&#xff09;&#xff0c;我们简称为模块。Linux内核之所以提供模块机制&#xff0c;是因为它本身是一个单内核&#xff08;monolithic kern…

【JS复习笔记】00 序

作为一个前端苦手&#xff0c;说是复习&#xff0c;你就当我是重学好了。 好吧&#xff0c;我当然不可能抱着一个砖头去复习&#xff0c;所以捡了本薄的来读——《JavaScript语言精粹》。 当初带我的人说这本书挺好&#xff0c;就看这本书好了。我觉得他说的挺对。我喜欢这么…

Generator执行步骤浅析

在Generator函数出现之前JS的函数只能返回一个值&#xff0c;返回的方式就是return&#xff0c;但是Generator函数可以返回多个值&#xff0c;返回的方式是yield。并且Generator赋予了外部动态影响函数内部的执行顺序的能力。 基础语法 function* f () {const a yield 1cons…

使用 jQuery.Pin 垂直滚动时固定导航

ZKEACMS的导航默认是不能固定的&#xff0c;随着页面的滚动而滚动&#xff0c;为了有更好的用户体验&#xff0c;当页面往下滚动时&#xff0c;可以将导航固定在顶端&#xff0c;这样方便用户点击。 jQuery Pin 借助jQuery的一个插件 jQuery.Pin&#xff0c;这个插件可在用来…

MDK升级后的头文件冲突

////TITLE:// MDK升级后的头文件冲突//AUTHOR:// norains//DATE:// Friday 17-June-2011//Environment:// Keil MDK 4.2// .NET Micro Framework Porting 4.1// 因为在移植的时候&#xff0c;发现了不少MDK编译的一些问题&#xff0c;于是便想升级到最新版本&a…

阻止默认事件

在JS中经常需要阻止元素的默认事件。而阻止默认事件的方法都是使用事件对象的preventDefault()方法或者在函数中return false。在最近一次开发中使用preventDefault()方法的时候遇到一个问题&#xff0c;现在才想/猜明白原因&#xff0c;场景是这样的&#xff1a; <a href&…

MySQL之SQL优化详解(三)

目录 MySQL 之SQL优化详解&#xff08;三&#xff09; 1. 索引优化2. 剖析报告:Show ProfileMySQL 之SQL优化详解&#xff08;三&#xff09; 1. 索引优化 一旦建立索引&#xff0c;select 查询语句的where条件要尽量符合最佳左前缀的原则&#xff0c;如若能做到全值匹配最好。…

行内格式化

相对于熟知的块级格式化上下文&#xff0c;行内格式化上下文更加的复杂难明。行内元素不像块级元素那样直来直去&#xff0c;一个块级元素占据一行&#xff0c;其他块级元素在垂直方向依次向下排列即可。行内元素不同&#xff0c;多个行内元素可以在一行显示&#xff0c;那么&a…

[转载]struts+hibernate遇到的错误总结

原文地址&#xff1a;strutshibernate遇到的错误总结作者&#xff1a;畫上句號经过对strutshibernate几天的学习&#xff0c;大体上还算比较的了解机制&#xff0c;以前学习的时候都是 单个框架训练&#xff0c;没有结合2个框架做&#xff0c;所以今天就找了个网上发布租房信息…

JPA休眠替代方案。 如果JPA或Hibernate对于我的项目而言不够好,该怎么办?

你好&#xff01;你好吗&#xff1f; 今天&#xff0c;我们将讨论不建议使用JPA / Hibernate的情况。 在JPA领域之外&#xff0c;我们还有哪些选择&#xff1f; 我们将谈论的是&#xff1a; JPA /休眠问题 解决一些JPA /休眠问题的方法 选择此处描述的框架的标准 Spring J…

一个Web前端自学者的自述

想来想去还是写下这篇文章&#xff0c;先说明&#xff0c;我精通JAVA编程语言和web前端常见的技术&#xff0c;个人是做JAVA的多&#xff0c;但是更加喜欢前端。因为我从高一开始接触JAVA&#xff0c;家父是黑马的JAVA讲师&#xff0c;自己对编程很热爱&#xff0c;在大学的时候…