博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSS 2. 盒模型|浮动
阅读量:5092 次
发布时间:2019-06-13

本文共 8856 字,大约阅读时间需要 29 分钟。

 1、盒模型

盒模型: 在网页中 基本上都会显示一些方方正正的盒子,这种盒子就被我们称为盒模型。重要的属性: width,height,padding,border, margin

盒子模型通过四个边界来描述:margin(外边距),border(边框),padding(内填充,内边距,壳子-边框),content(内容区域)

width: 指的是内容的宽度,而不是整个盒子真实的宽度;height: 指的是内容的高度,而不是整个盒子真实的高度。

做一个宽度402*402的盒子,你应该如何设计?盒模型的计算

    
盒模型的计算
内容
1  2  3  4     
5 背景 6 7 20 21 22
23 24
View Code

 

padding

  padding:内边距 控制内容到边框的距离

1.只写一个padding代表四个方向,也可以单独指定某一个方向

2.元素设置了padding值是额外加在原来大小之上的width+padding。如果不想改变实际大小,那就在width-padding对应方向的值

3.padding是添加给父级的,改变的是父级包含的内容的位置,自身位置不变

4.简写方法 1)一个值:4个方向       2)两个值:上下 左右      3)三个值:上 左右 下      4)四个值:上 右 下 左(顺时针方向)

注意:padding不支持负值

    
Title
我非常地幸运,能从那些对这一点深信不疑的人身上学习,他们清楚地知道改变世界的起点是 “跟随一种远见卓识,而不是某一条道路”。这就是我的朋友和导师——史蒂夫·乔布斯。 乔布斯的远见便是,伟大的想法从拒绝接受事情原本的样子中诞生出来。这些原则在今天依旧指导着苹果公司的员工。

 

    
padding
123

 

一些标签默认有padding

body有默认的margin:8px,        比如说通常我们做站的时候,要清除默认的padding,margin        *它的效率不高。所以我们要使用并集选择器来选中页面中应有的标签(不同去背记,因为有人已经给咱们写好了这些清除默认的样式表)            百度一下reset.css        body, div, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, pre, code, form, fieldset, legend, input, button, textarea, p, blockquote, th, td {            margin: 0;            padding: 0;        }

border

边框样式

1.border会改变元素的实际大小;       2.背景色会渲染到border区域

 

  

 

四个值: 上  右 下 左 顺时针 border-style:dotted dashed double solid;三个值: 上 左右 下两个值: 上下。左右一个值: 四个方向

 

 

    
Title

 

用border制作小三角形

    
Title

margin 

 margin: 外边距,控制元素与元素之间的距离。

1)margin 的4个方向  

2)margin会改变实际大小,背景色不会渲染到margin区域 这个区域会以空白显示,但是也属于盒子的一部分

3)margin是添自身的,如果哪个想要改变自己的位置,就给谁添加margin  

 html的部分标签自带margin padding p body ul

相邻两个元素或者嵌套时都会遇到这样的问题:一个是往上走一个往下走,它们的外边距是相遇了,就会形成一个外边距,它们的外边距会进行合并(这是一种效果,不是人为的),当这两个值是以最大值为基准进行设置的,就是说如果我的外边距是20,它的是40,就以它的为基准进行设置。如何解决呢?可以给它设置个border:见下面,这样就设置成100了

    
margin

在有父子关系的时候

    
margin

 

    
margin

子元素margin-top如何影响父元素:https://blog.csdn.net/sinat_27088253/article/details/52954688

 

margin塌陷问题

    
Title
内容1 内容2

 

margin 0 auto

1.使用margin: 0 auto;水平居中盒子 必须有width,要有明确width,如果没有会继承父盒子宽度,靠父盒子来填充它的宽度;        文字水平居中使用text-align: center;    2.只有标准流下的盒子 才能使用margin:0 auto;     当一个盒子浮动了,固定定位,绝对定位了,margin:0 auto; 不能用了    3.margin:0 auto;居中盒子。而不是居中文本,文字水平居中使用text-align: center;
    
Title
文字
View Code

善用父padding,而不是margin

1  2  3  4     
5 Title 6 29 30 31 32
33
34
35 36
View Code

 

什么是标准文档流        宏观的讲,我们的web页面和ps等设计软件有本质的区别        web 网页的制作 是个“流”像水流一样,  从上而下 ,像 “织毛衣”        而设计软件 ,想往哪里画东西 就去哪里画        标准文档流下 有哪些微观现象?        1.空白折叠现象;多个空格之间或者只要换行了都被当做一个空格        2.高矮不齐,底边对齐;        3.自动换行,一行写不满,换行写。

 2、display的用法

display1.控制HTML元素的显示和隐藏 2.块级元素与行内元素的转换。display:block(块级)默认占满整个页面宽度,如果设置了指定宽度,则会用margin填充剩下的部分。display:inline(行内)行内元素只要设置了display: inline,那么元素的width、height、margin-top、margin-bottom和 float属性都不会有什么影响。display:inline-block(行内块级)行内块元素同时具有行内元素和块级元素的特点。display:noneHTML文档中元素存在,但是在浏览器中不显示。一般用于配合JavaScript代码使用。

 

块级元素特点:display:block;1、每个块级元素都从新的一行开始,并且其后的元素也另起一行。独占一行2、元素的高度、宽度、行高以及顶和底边距都可设置。3、元素宽度在不设置的情况下,是它本身父容器的100%(和父元素的宽度一致),除非设定一个宽度。行内元素特点:display:inline;1、和其他元素都在一行上;2、元素的高度、宽度及顶部和底部边距不可设置;3、元素的宽度就是它包含的文字或图片的宽度,不可改变。行内块状元素的特点:display:inline-block;1、和其他元素都在一行上;2、元素的高度、宽度、行高以及顶和底边距都可设置

 

 块级元素和行内块元素的转换

    
Title
内容1
内容1
内容2
alex kris

 

    
display
123
块级元素
234
百度一下 行内元素 小米 行内块状元素

 

3、浮动

浮动产生的效果

先来了解一下block元素和inline元素在文档流中的排列方式。block元素通常被现实为独立的一块,独占一行,多个block元素会各自新起一行,默认block元素宽度自动填满其父元素宽度。block元素可以设置width、height、margin、padding属性;inline元素不会独占一行,多个相邻的行内元素会排列在同一行里,直到一行排列不下,才会新换一行,其宽度随元素的内容而变化。inline元素设置width、height属性无效常见的块级元素有 div、form、table、p、pre、h1~h5、dl、ol、ul 等。常见的内联元素有span、a、strong、em、label、input、select、textarea、img、br等所谓的文档流,指的是元素排版布局过程中,元素会自动从左往右,从上往下的流式排列。脱离文档流,也就是将元素从普通的布局排版中拿走,其他盒子在定位的时候,会当做脱离文档流的元素不存在而进行定位。假如某个div元素A是浮动的,如果A元素上一个元素也是浮动的,那么A元素会跟随在上一个元素的后边(如果一行放不下这两个元素,那么A元素会被挤到下一行);如果A元素上一个元素是标准流中的元素,那么A的相对垂直位置不会改变,也就是说A的顶部总是和上一个元素的底部对齐。此外,浮动的框之后的block元素元素会认为这个框不存在,但其中的文本依然会为这个元素让出位置。 浮动的框之后的inline元素,会为这个框空出位置,然后按顺序排列。float属性值:1、left:左浮动 左侧为起始,从左向右排列2、right:右浮动  右侧为起始,从右向左排列3、none :不浮动,默认不浮动浮动产生的影响浮动可以使元素按指定方向排列,直到遇到父元素的边界或另一个浮动元素停止浮动的特性文档流是:可见元素在文档中排列位置,元素排版布局过程中,元素会自动从左往右,从上往下的流式排列。1.浮动会使元素脱离文档流2.浮动会使元素提升层级3.浮动可以使块元素在一行排列,不设置宽高的时候,可以使元素适应内容 4.浮动可以使行内元素支持宽高

 

    
浮动
1
2
3
4
5
6
7
8
9
11
12
13

 

 

浮动是css里面布局最多的一个属性        效果: 两个元素并排了,并且两个元素都能够设置宽度和高度        浮动想学好:一定要知道它的四个特性:        1.浮动的元素脱标        2.浮动的元素互相贴靠        3.浮动的元素有“字围”效果        4.收缩的效果

浮动的元素脱标

    
Title
小红
小黄
span标签1 span标签2

浮动元素互相贴靠

    
Title
1
2
3

浮动元素字围效果

所谓字围效果:        当div浮动,p不浮动        div挡住了p,div的层级提高,但是p中的文字不会被遮盖,此时就形成了字围效果        关于浮动我们强调一点,浮动这个元素,我们初期一定要遵循一个原则        永远不是一个盒子单独浮动,要浮动就要一起浮动。
    
Title

我们都可以从他们的例子中学习。如果你希望改变世界,你必须激起你的无畏。现在, 如果你像我毕业那天一样,也许你并不感到无所畏惧。也许你正在考虑你希望得到的那份工作,或者想知道你要住到哪里,或者如何偿还学生贷款。 这些,我都知道,它们是实实在在的忧虑。我也有这些忧虑,但不要让这些烦恼阻止你做出改变。 无畏意味着要勇敢迈出第一步,即使你不知道它将你引至何处。这意味着被更高尚的目标所驱动,而不是掌声。无畏意味着当你远离人群、站在别处时, 才会发现自己的特性,这将比你在众声喧哗中获得更多。 如果你想加快速度,就要不惧怕失败;如果你想与他人互相倾听和交谈,就不要担心被拒绝;如果你举止得体,充满善意,即使没有人看到,你期待的一切也会来到。 对你们来说,现在是时候在前进的道路上添砖加瓦了。也是时候,让我们所有人共同前进了。同时,未来该由你们带路了。 谢谢你们, 祝贺你们,2018届毕业生。

浮动元素紧凑效果就是收缩

收缩:就是一个浮动元素。如果没有设置宽度width,那么就自动收缩为文字的宽度(这点跟行内元素很像)

产生的浮动效果,为什么要清除浮动?

 浮动的特性

    
浮动特性
哈哈
哈哈
爽歪歪

浮动产生的问题和解决方法

  父元素不设置高度,子元素设置浮动之后,不会撑开父元素的高度,那么此时父盒子没有高度了。如果在次父盒子下面还有一个标准流的盒子,那么就会影响页面的布局。所以我们要解决浮动带来的页面布局错乱问题------清除浮动。

解决方法:

1.给父元素固定高度。不灵活 2.在浮动元素最后加一个空的块元素,且块元素不浮动,设置其属性为clear:both    结构冗余 3.常用方法:.wrap:after{            clear: both;            content: "";            height: 0;            visibility: hidden;            display: block;        }4.给父盒子 添加overflow:hidden属性
    
Title

 

 清除浮动1:给父盒子设置高度

    
Title
  • python
  • web
  • linux

清除浮动2 clear both

  给浮动元素最后面加一个空的div 并且该元素不浮动 ,然后设置clear:both 清除别人对我的浮动影响。

内墙法 ,无缘无故加了div元素 结构冗余 

    
  • Python
  • web
  • linux
View Code

清除浮动3 伪元素清除法 (常用)

    
Title
  • python
  • web
  • linux

清除浮动4 overflow hidden(常用)

    
伪元素清除法(常用)
  • Python
  • web
  • linux

overflow

    
Title
我们都可以从他们的例子中学习。如果你希望改变世界,你必须激起你的无畏。现在,如果你像我毕业那天一样,也许你并不感到无所畏惧。 也许你正在考虑你希望得到的那份工作,或者想知道你要住到哪里,或者如何偿还学生贷款。这些,我都知道,它们是实实在在的忧虑。我也有这些忧虑,但不要让这些烦恼阻止你做出改变。 无畏意味着要勇敢迈出第一步,即使你不知道它将你引至何处。这意味着被更高尚的目标所驱动,而不是掌声。无畏意味着当你远离人群、站在别处时,才会发现自己的特性, 这将比你在众声喧哗中获得更多。

 

练习京东导航栏(用float)

    

 

转载于:https://www.cnblogs.com/shengyang17/p/9144191.html

你可能感兴趣的文章
一些常用的算法库
查看>>
db2循环
查看>>
C#语言-04.OOP基础
查看>>
vs2015配置boost c++
查看>>
js学习总结----iscroll
查看>>
1)session总结
查看>>
什么?云数据库也能C位出道?
查看>>
Centos6 import tensorflow遇到的问题
查看>>
String面试题
查看>>
7——1 shelve 模块
查看>>
代理模式 vs 装饰模式
查看>>
【原创】k8s源代码分析-----kubelet(3)ContainerGC
查看>>
PHP深浅拷贝
查看>>
SDN第四次作业
查看>>
ActiveMQ(4) ActiveMQ JDBC 持久化 Mysql 数据库
查看>>
DM8168 DVRRDK软件框架研究
查看>>
MySQL中同一时候存在创建和上次更新时间戳字段解决方法浅析
查看>>
HTML学习笔记(七)
查看>>
sqlplus登录、连接命令
查看>>
微价值:专訪个人开发人员800万用户之《系统清道夫》
查看>>