前端基础总结之css 03_盒模型

知识导航:

  • 盒子边框
  • 盒子内边距
  • 盒子外边距
  • 涉及部分c3内容

网页的本质就是利用css设置盒子的大小,摆放盒子的位置。最后把内容图片、文字等放入其中。

标准的盒子模型:
在这里插入图片描述

1. 盒子边框

在这里插入图片描述
基本语法:

border : border-width || border-style || border-color
属性 作用
border-width 定义边框粗细,单位是px
border-style 边框的样式
border-color 边框颜色

解释
边框的样式属性:

  • none:无边框,即忽略边框的宽度
  • solid:边框为单实线
  • dashed:边框为虚线
  • dotted:边框为点线

边框的综合设置

语法:
例如:

 border: 1px solid red;  没有顺序 

盒子边框写法总结

很多情况,对四条边框我们不需要全部进行设置。

上边框 下边框 左边框 右边框
border-top-style:样式; border-bottom-style:样式; border-left-style:样式; border-right-style:样式;
border-top-width:宽度; border- bottom-width:宽度; border-left-width:宽度; border-right-width:宽度;
border-top-color:颜色; border- bottom-color:颜色; border-left-color:颜色; border-right-color:颜色;
border-top:宽度 样式 颜色; border-bottom:宽度 样式 颜色; border-left:宽度 样式 颜色; border-right:宽度 样式 颜色;

表格的细线边框

当我们为表格设置边框的时候,将单元格之间的距离设置为0 。便出现了下面的情况
在这里插入图片描述
容易看出内部的线是要比外部的深。出现这种情况的原因是两个单元格之间的边框出现了重叠。
解决方法:
通过css属性:table{ border-collapse:collapse; }

2. 内边距

在这里插入图片描述
对应属性:

属性 作用
padding-left 左内边距
padding-right 右内边距
padding-top 上内边距
padding-bottom 下内边距

综合写法(根据属性值个数的不同有):

值的个数 表达意思
1个值 padding:上下左右内边距;
2个值 padding: 上下内边距 左右内边距 ;
3个值 padding:上内边距 左右内边距 下内边距;
4个值 padding: 上内边距 右内边距 下内边距 左内边距 ;(顺时针)

当我们设置了padding之后会发生两件事

  • 内容与边框之间出现了距离
  • 盒子被撑大了

盒子是实际大小=内容的宽高+padding+边框

内边距产生的原因

我们在css中为盒子设置的宽高其实只是内容的。当我们增加padding时。盒子自然就被撑大了
解决方法给设置了宽高的盒子-设置的相应padding值。维持盒子本身的大小

padding不影响盒子大小的情况

看下面这段代码

<style>
        div {
            width: 100px;
            height: 100px;
            background-color: red;
            border: 1px solid red;
        }
        
        p {
            padding: 0px 10px;
            height: 100px;
            background-color: yellow;
        }
    </style>
	<div>
        <p></p>
    </div>

p是块级元素,它的宽充满整个父级。即为100px,但我又为它设置了左右padding。它的宽度应为120px才对。
但是我们查看效果图:
在这里插入图片描述
发现仍是100 。只是内容被压缩了。这是什么情况呢?
原来:如果没有给一个盒子指定宽度, 此时,如果给这个盒子指定padding, 则不会撑开盒子。

3. 外边距

在这里插入图片描述
即为盒子与盒子之间的距离。
对应属性:(与padding相同)

属性 作用
margin-left 左外边距
margin-right 右外边距
margin-top 上外边距
margin-bottom 下外边距

使块级元素水平居中

只需给这个盒子两个要求:

  • 盒子必须指定了宽度
  • 把它的左右外边距设为auto

常见的三种写法:

  • margin-left: auto; margin-right: auto;
  • margin: auto;
  • margin: 0 auto;

值得注意的是:

  • 为了更灵活方便地控制网页中的元素,制作网页时,我们需要将元素的默认内外边距清除
* { 
  	 padding:0;         
	  margin:0;  
}       
  • 行内元素为了照顾兼容性, 尽量只设置左右内外边距, 不要设置上下内外边距。

外边距合并问题(外边距塌陷)

使用margin定义块元素的垂直外边距时,可能会出现外边距的合并

上下相邻的两个块元素相遇时,如果上面的元素有下外边距margin-bottom下面的元素有上外边距margin-top,则他们之间的垂直间距不是margin-bottom与margin-top之和。而是两者最大的那个
解决方法:设置一个的magin就行啦,非得设置两个?

嵌套块元素垂直外边距的合并(塌陷)问题

对于两个嵌套关系的块元素,如果父元素没有上内边距及边框,父元素的上magin会与子元素的上magin发生合并。

解决方案:

  • 可以为父元素定义上边框。
  • 可以为父元素定义上padding
  • 可以为父元素添加overflow:hidden。
    当然还有其他方法了

4. 涉及到的c3

圆角边框

语法
比如让正方形成一个圆
在这里插入图片描述
即让它的radius为高宽的一半就可以了,可以写具体像素。也可以简单如下:

border-radius: 50%;

但是要实现这种效果:
在这里插入图片描述

只需把radius设为矩形高度的一半就行了。

盒子阴影

语法:

box-shadow:
水平阴影(影子在水平方向上移动,单位px) 
垂直阴影(在竖直方向移动,px) 
模糊距离(虚实,单位px)  阴影尺寸(影子大小,单位px) 
阴影颜色 
 内/外阴影(外阴影省略即可默认的但不可写,内可以写inset)一般均省略因为都是外阴影又不用写;

举个例子

div {
			width: 200px;
			height: 200px;
			border: 10px solid red;
			box-shadow: 5px 5px 3px 4px rgba(0, 0, 0, .4); 

发布了33 篇原创文章 · 获赞 49 · 访问量 4435

猜你喜欢

转载自blog.csdn.net/qq_41086511/article/details/103838189
今日推荐