常见的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,一经查实,立即删除!

相关文章

netflix数据处理2(转)

原始数据&#xff1a;$head -10 mv_0006890.txt6890:1735266,1,2004-04-021008399,1,2004-06-222360117,2,2003-11-081294425,2,2004-03-15439931,4,2004-03-271583311,1,2004-03-112431832,3,2005-02-13620771,2,2004-03-201110906,1,2004-03-04结果数据&#xff1a;user_id m…

jQuery 效果

显示和隐藏 1. show(speed) &#xff1a;speed 可以取&#xff1a;slow/fast/毫秒 1 $("#show").click(function(){2 $("p").show(1000);3 }); 2. hide(speed) &#xff1a; 1 $("#hide").click(function(…

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..…

使用Drools跟踪输出

Drools 6包含一个跟踪输出&#xff0c;可以帮助您了解系统中正在发生的事情&#xff0c;事物执行的频率以及多少数据。 这也有助于理解Drools 6现在是基于目标的算法&#xff0c;它使用链接机制链接评估规则。 有关此的更多详细信息&#xff1a; http://www.javacodegeeks.co…

CodeSmith注册机,支持5.2.2和5.2.1版

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

JS中与正则相关的方法

前面有一篇文章大体介绍了一下JS中正则表达式&#xff0c;而使用正则表达式还需要配合JS中的相关方法&#xff0c;分别是String对象和RegExp对象的方法。今天就来具体介绍一下这些方法。 使用这则表达式的方法可以分为两类&#xff0c;一个是String的几个方法&#xff0c;还有…

JS基础:求一组数中的最大最小值,以及所在位置

1 var arr [0, 5, -3, 6, 2, -6, 10];2 //定义一个最大值和一个最小值&#xff0c;把他们的索引值赋值给固定的两个变量3 var maxValue arr[0];4 var minValue arr[0];5 var maxIndex 0;6 var minIndex 0;7 for …

linux epoll,poll,select

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

λ和副作用

总览 Java 8添加了诸如lambda和类型推断之类的功能。 这使语言不那么冗长和简洁&#xff0c;但是它带来了更多的副作用&#xff0c;因为您不必对所做的事情那么明确。 Lambda的返回类型很重要 Java 8推断闭包的类型。 一种方法是查看返回类型&#xff08;或是否返回任何内容&a…

sessionStorage和localStorage的用法,不同点和相同点

一&#xff0c;共同点 &#xff08;1)存储时用setItem: localStorage.setItem("key","value");//以“key”为名称存储一个值“value”sessionStorage.setItem("key", "value"); &#xff08;2&#xff09;获取时用getItem: localS…

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

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

没有IF-ELSE的工厂

面向对象语言具有非常强大的多态性功能&#xff0c;用于删除代码中的if / else或切换大小写。 没有条件的代码易于阅读。 在某些地方必须放置它们&#xff0c;其中一个示例是Factory / ServiceProvider类。 我敢肯定&#xff0c;您已经看到IF-ELSEIF的工厂课程了&#xff0c;…

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

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

浏览器劫持者

launchpage 浏览器劫持者&#xff0c;它会在未经你的许可下就接管你的浏览器。更多 https://launchpage.org/?uidqT5KGGjMhxpsXWEzIkWR44y5McmHTuSG50ukahoC8gOClKIGNwZP0nuyPBoYUFiBINK7 https://ns.freedrive.cn/?sEB5805AD0&ghttp://item.jd.com/13300636764.html 更…

Kubernetes 中文文档

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

Edge 浏览器

Edge浏览器设计理念 无法播放&#xff1a;https://edgewelcomecdn.microsoft.com/site/images/tabs/rs3/tabs_screen.acd367a2.mp4 控制台消息 WEBGL11256: 检测到 GPU 重置。正在临时切换到软件呈现 WEBGL11056: 遇到的错误太多&#xff0c;将不再记录更多错误 Intersecti…

为什么NULL是错误的?

Java中NULL用法的简单示例&#xff1a; public Employee getByName(String name) {int id database.find(name);if (id 0) {return null;}return new Employee(id); }这种方法有什么问题&#xff1f; 它可能返回NULL而不是对象-这是错误的。 在面向对象的范例中&#xff0c…

网易原来也是个骗子

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

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

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

Test 6.29 T3 小学生

问题描述 “不错,不错!那么,准备好迎接下一道题了么?”一道白光闪过,CJK 眼前出现了 1e100 个小学生。“他们中,有一些人轨了我的机子。现在,我需要你在 1S 之内找出他们,并让他们认错!”凭借自己无所不知的神(xuan)奇(xue)力量, CJK 立刻发现了轨了 JesseLiun的机子的那 n 个…