学习源
display属性
display属性配置浏览器渲染元素的方式,每种元素有其默认的渲染方式(display值)
css中通过display来控制元素的布局
大多数的元素默认布局有两种块状和行内,于是元素被分成块状元素和行内元素
div 是一个标准的块级元素。单独占据一行。
span 是一个标准的行内元素。可以放在一行内部。
display:none可以用来在不铲除元素的情况下隐藏元素
这种情况和visibility: hidden不一样,后者是隐形,前者是消失。区别在于使用后元素是否占据空间。
元素类型可以改写
常见的例子是:把 li 元素修改成 inline,制作成水平菜单。
box-sizing属性
1 | * { |
设置之后元素的内边距和边框不再会增加它的宽度。
position属性
static
position属性的默认值是static,不会被特殊定位。在文档流(normal flow)中正常显示。
除了static以外的所有值赋予元素后,元素就都变成了posioned元素
关于文档流和文本流的参考:
https://www.w3.org/TR/CSS21/visuren.html
https://blog.csdn.net/qq_40421277/article/details/79687268
这篇csdn里面说的float脱离文档流不准确。
https://www.zhihu.com/question/21911352
表面上看,float脱离了“文档流”,没有脱离“文本流”
实际上,根据英文文档上面解释的意思,当元素浮动的时候,会先遵循“Normal flow”的规则,然后尽可能的向俩边靠。所以float并不是会脱离文档流,反而是依赖于文档流。
至于文本流,我自己还没有看到这种解释的。在“Normal flow”中,BFC规则中,文本会围绕在浮动元素旁边。出现了这种现象,可能国人就自定义了“文本流”这种东西。
https://segmentfault.com/a/1190000012425858
relative
表现和static一样,不过可以使用top 、 right 、 bottom 和 left属性改变relative positioned元素的位置,并且别的元素的位置不会改变。
relative和元素开始的static状态相对
fixed
根据视窗定位
移动浏览器对 fixed 的支持很差
absolute
absolute根据最近的“positioned”祖先元素确定其位置,没有的话,相对body元素定位
absolute对于祖先元素绝对,absolute没有和relative放在一起的原因是虽然这两个单词词义相反,但在css用法上面却没有什么联系,反而和fixed有一定联系(一个根据视窗定位,一个根据祖先元素定位)
如果你使用了一个固定定位的页眉或页脚,确保有足够的空间来显示它们!我在 body 上面加了 margin-bottom 。
float属性
1 | img { |
Float 可用于实现文字环绕图片
在使用浮动控制图片时,可能会出现图片脱离元素容器的情况,可以通过清除浮动(清除浮动)解决
1 | .clearfix { |
clear属性
clear用于控制浮动
https://zh.learnlayout.com/clear.html
百分比宽度布局
百分比是一种相对于包含块的计量单位。可以通过百分比布局使得图片宽度始终是容器宽度的50%
1 | article img { |
响应式设计与媒体查询
使用百分比宽度来布局,然后在浏览器变窄到无法容纳侧边栏中的菜单时,把布局显示成一列
1 | @media (min-width:600px) { |
一些响应式布局做的好的网站:
使用 meta viewport 之后可以让你的布局在移动浏览器上显示的更好。
https://dev.opera.com/articles/an-introduction-to-meta-viewport-and-viewport/
创建很多网格来铺满浏览器的实现方式
困难的方式(使用浮动)
1 | .box { |
容易的方式(使用 inline-block)
1 | .box2 { |
在使用inline-block时需要注意一些问题:
- vertical-align 属性会影响到 inline-block 元素,你可能会把它的值设置为 top 。
- 你需要设置每一列的宽度
- 如果HTML源代码中元素之间有空格,那么列与列之间会产生空隙
1 | nav { |
实现文字的多列布局
1 | .three-column { |
CSS columns是很新的标准,所以你需要使用前缀,并且它不被IE9及以下和Opera Mini支持。
flexbox布局模式
display: flex的为当前版本
[最新flexbox资料]https://bocoup.com/blog/dive-into-flexbox
https://zh.learnlayout.com/flexbox.html
浏览器开发者模式
在开发者模式下,可以通过分别按下ctrl、shift、alt来控制数值变化的幅度。
完
- Post title:css布局学习记录
- Post author:Willem Zhang
- Create time:2021-04-15 01:28:56
- Post link:https://ataraxia.top/2021/04/14/css布局学习记录/
- Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.