css基础 盒子模型border边框marginpaddingCSS分组和嵌套选择器Display(显示) 与 Visibility(可见性)Position 定位
Posted 知其黑、受其白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了css基础 盒子模型border边框marginpaddingCSS分组和嵌套选择器Display(显示) 与 Visibility(可见性)Position 定位相关的知识,希望对你有一定的参考价值。
阅读目录
- CSS 盒子模型
- CSS border 边框
- margin(外边距)
- CSS padding(填充)
- CSS 分组 和 嵌套 选择器
- CSS Display(显示) 与 Visibility(可见性)
- CSS Position 定位
CSS 盒子模型
所有 html 元素可以看作盒子,在CSS中,”box model”
这一术语是用来设计和布局时使用。
CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:
边距,边框,填充,和实际内容。
盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。
下面的图片说明了盒子模型 (Box Model)
:
不同部分的说明:
Margin(外边距) – 清除边框区域。Margin 没有背景颜色,它是完全透明
Border(边框) – 边框周围的填充和内容。边框是受到盒子的背景颜色影响
Padding(内边距) – 清除内容周围的区域。会受到框中填充的背景颜色影响
Content(内容) – 盒子的内容,显示文本和图像
为了在所有浏览器中的元素的宽度和高度设置正确的话,你需要知道的盒模型是如何工作的。
提示:在盒模型中,外边距可以是负值,而且在很多情况下都要使用负值的外边距。
元素的宽度和高度
重要: 当您指定一个 CSS 元素的宽度和高度属性时,你只是设置内容区域的宽度和高度。要知道,完全大小的元素,你还必须添加填充,边框和边距。
下面的例子中的元素的总宽度为 300px:
width:250px;
padding:10px;
border:5px solid gray;
margin:10px;
让我们自己算算:
250px (宽)
+ 20px (左 + 右填充)
+ 10px (左 + 右边框)
+ 20px (左 + 右边距)
= 300px
试想一下,你只有 250 像素的空间。让我们设置总宽度为 250 像素的元素:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
div.ex
width:220px;
padding:10px;
border:5px solid gray;
margin:0px;
</style>
</head>
<body>
<img src="3.jpg" width="250" height="250" />
<div class="ex">上面的图片是250像素宽。这个元素的总宽度也是250px。</div>
</body>
</html>
最终元素的总宽度计算公式是这样的:
总元素的宽度=宽度+左填充+右填充+左边框+右边框+左边距+右边距
元素的总高度最终计算公式是这样的:
总元素的高度=高度+顶部填充+底部填充+上边框+下边框+上边距+下边距
浏览器的兼容性问题
一旦为页面设置了恰当的 DTD,大多数浏览器都会按照上面的图示来呈现内容。
然而 IE 5 和 6 的呈现却是不正确的。
根据 W3C 的规范,元素内容占据的空间是由 width 属性设置的,而内容周围的 padding 和 border 值是另外计算的。
不幸的是,IE5.X 和 6 在怪异模式中使用自己的非标准模型。这些浏览器的 width 属性不是内容的宽度,而是内容、内边距和边框的宽度的总和。
虽然有方法解决这个问题。但是目前最好的解决方案是回避这个问题。也就是,不要给元素添加具有指定宽度的内边距,而是尝试将内边距或外边距添加到元素的父元素和子元素。
IE8 及更早IE版本不支持 填充的宽度和边框的宽度属性设。
解决 IE8 及更早版本不兼容问题可以在 HTML 页面声明 <!DOCTYPE html>
即可。
CSS border 边框
CSS 边框属性
CSS边框属性允许你指定一个元素边框的样式和颜色。
边框样式
边框样式属性指定要显示什么样的边界。
border-style 属性用来定义边框的样式
border-style 值:none: 默认无边框
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
p.none
border-style: none;
p.dotted
border-style: dotted;
p.dashed
border-style: dashed;
p.solid
border-style: solid;
p.double
border-style: double;
p.groove
border-style: groove;
p.ridge
border-style: ridge;
p.inset
border-style: inset;
p.outset
border-style: outset;
p.hidden
border-style: hidden;
</style>
</head>
<body>
<p class="none">无边框。</p>
<p class="dotted">虚线边框。</p>
<p class="dashed">虚线边框。</p>
<p class="solid">实线边框。</p>
<p class="double">双边框。</p>
<p class="groove"> 凹槽边框。</p>
<p class="ridge">垄状边框。</p>
<p class="inset">嵌入边框。</p>
<p class="outset">外凸边框。</p>
<p class="hidden">隐藏边框。</p>
</body>
</html>
边框宽度
您可以通过 border-width 属性为边框指定宽度。
为边框指定宽度有两种方法:
可以指定长度值,比如 2px 或 0.1em(单位为 px, pt, cm, em 等),或者使用 3 个关键字之一,它们分别是 thick 、medium(默认值) 和 thin。
注意1:
CSS 没有定义 3 个关键字的具体宽度,所以一个用户可能把 thick、medium 和 thin 分别设置为等于 5px、3px 和 2px,而另一个用户则分别设置为 3px、2px 和 1px。
注意2:
border-width属性如果单独使用则不起作用. 要先使用 border-style 属性来设置 borders .
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
p.one
border-style: solid;
border-width: 5px;
p.two
border-style: solid;
border-width: medium;
p.three
border-style: solid;
border-width: 1px;
</style>
</head>
<body>
<p class="one">一些文字</p>
<p class="two">一些文字</p>
<p class="three">一些文字</p>
</body>
</html>
边框颜色
border-color 属性用于设置边框的颜色。可以设置的颜色:
name – 指定颜色的名称,如 “red”
RGB – 指定 RGB 值, 如 “rgb(255,0,0)”
Hex – 指定16进制值, 如 “#ff0000”
您还可以设置边框的颜色为”transparent”。
注意: border-color 单独使用是不起作用的,必须得先使用 border-style 来设置边框样式。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
p.one
border-style:solid;
border-color:red;
p.two
border-style:solid;
border-color:#98bf21;
</style>
</head>
<body>
<p class="one">坚实的红色边框</p>
<p class="two">坚实的绿色边框</p>
</body>
</html>
边框 - 单独设置各边
在CSS中,可以指定不同的侧面不同的边框:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
p
border-top-style: dotted;
border-right-style: solid;
border-bottom-style: dotted;
border-left-style: solid;
</style>
</head>
<body>
<p>2种不同的边框样式。</p>
</body>
</html>
上面的例子也可以设置一个单一属性:
p
border-style:dotted solid;
border-style 属性可以有1-4个值:
border-style:dotted solid double dashed;
上边框是 dotted
右边框是 solid
底边框是 double
左边框是 dashed
border-style:dotted solid double;
上边框是 dotted
左、右边框是 solid
底边框是 double
border-style:dotted solid;
上、底边框是 dotted
右、左边框是 solid
border-style:dotted;
四面边框是 dotted
上面的例子用了 border-style。然而,它也可以和 border-width 、 border-color一起使用。
透明边框
CSS2 引入了边框颜色值 transparent
,这个值用于创建有宽度的不可见边框。
透明样式的定义如下:
a:link, a:visited
border-style: solid;
border-width: 5px;
border-color: transparent;
a:hover
border-color: gray;
利用 transparent
,使用边框就像是额外的内边距一样;
此外还有一个好处,就是能在你需要的时候使其可见。这种透明边框相当于内边距,因为元素的背景会延伸到边框区域(如果有可见背景的话)。
边框-简写属性
上面的例子用了很多属性来设置边框。你也可以在一个属性中设置边框。
你可以在 ”border”
属性中设置:
border-width
border-style (required)
border-color
CSS 边框属性
属性 | 描述 |
---|---|
border | 简写属性,用于把针对四个边的属性设置在一个声明。 |
border-style | 用于设置元素所有边框的样式,或者单独地为各边设置边框样式。 |
border-width | 简写属性,用于为元素的所有边框设置宽度,或者单独地为各边边框设置宽度。 |
border-color | 简写属性,设置元素的所有边框中可见部分的颜色,或为 4 个边分别设置颜色。 |
border-bottom | 简写属性,用于把下边框的所有属性设置到一个声明中。 |
border-bottom-color | 设置元素的下边框的颜色。 |
border-bottom-style | 设置元素的下边框的样式。 |
border-bottom-width | 设置元素的下边框的宽度。 |
border-left | 简写属性,用于把左边框的所有属性设置到一个声明中。 |
border-left-color | 设置元素的左边框的颜色。 |
border-left-style | 设置元素的左边框的样式。 |
border-left-width | 设置元素的左边框的宽度。 |
border-right | 简写属性,用于把右边框的所有属性设置到一个声明中。 |
border-right-color | 设置元素的右边框的颜色。 |
border-right-style | 设置元素的右边框的样式。 |
border-right-width | 设置元素的右边框的宽度。 |
border-top | 简写属性,用于把上边框的所有属性设置到一个声明中。 |
border-top-color | 设置元素的上边框的颜色。 |
border-top-style | 设置元素的上边框的样式。 |
border-top-width | 设置元素的上边框的宽度。 |
margin(外边距)
CSS margin(外边距)属性定义元素周围的空间。
margin 清除周围的(外边框)元素区域。margin 没有背景颜色,是完全透明的。
margin 可以单独改变元素的上,下,左,右边距,也可以一次改变所有的属性。
注:Margin 可以使用负值,重叠的内容。
Margin – 单边外边距属性
在CSS中,它可以指定不同的侧面不同的边距:
margin-top:100px;
margin-bottom:100px;
margin-right:50px;
margin-left:50px;
Margin – 简写属性
为了缩短代码,有可能使用一个属性中 margin 指定的所有边距属性。这就是所谓的简写属性。
所有边距属性的简写属性是 margin :
margin:100px 50px;
margin属性可以有一到四个值。
margin:25px 50px 75px 100px;
上边距为25px
右边距为50px
下边距为75px
左边距为100px
margin:25px 50px 75px;
上边距为25px
左右边距为50px
下边距为75px
margin:25px 50px;
上下边距为25px
左右边距为50px
margin:25px;
所有的4个边距都是25px
CSS padding(填充)
CSS padding(填充)是一个简写属性,定义元素边框与元素内容之间的空间,即上下左右的内边距。
padding(填充)
当元素的 padding(填充)内边距被清除时,所释放的区域将会受到元素背景颜色的填充。
单独使用 padding 属性可以改变上下左右的填充。
填充- 单边内边距属性
在CSS中,它可以指定不同的侧面不同的填充:
padding-top:25px;
padding-bottom:25px;
padding-right:50px;
padding-left:50px;
上内边距是 25px
右内边距是 50px
下内边距是 25px
左内边距是 50px
填充 – 简写属性
为了缩短代码,它可以在一个属性中指定的所有填充属性。
这就是所谓的简写属性。所有的填充属性的简写属性是 padding :
padding:25px 50px;
Padding属性,可以有一到四个值。
padding:25px 50px 75px 100px;
上填充为25px
右填充为50px
下填充为75px
左填充为100px
padding:25px 50px 75px;
上填充为25px
左右填充为50px
下填充为75px
padding:25px 50px;
上下填充为25px
左右填充为50px
padding:25px;
所有的填充都是25px
CSS 分组 和 嵌套 选择器
CSS 分组可以将具有相同样式的选择器进行分组,减少代码量。
CSS 嵌套适用于选择器内部的选择器的样式。
分组选择器
在样式表中有很多具有相同样式的元素。
h1
color:green;
h2
color:green;
p
color:green;
为了尽量减少代码,你可以使用分组选择器。
每个选择器用逗号分隔。
在下面的例子中,我们对以上代码使用分组选择器:
<style>
h1,h2,p
color:green;
</style>
<body>
<h1>Hello World!</h1>
<h2>这是一个二级标题!</h2>
<p>这是一个段落。</p>
</body>
提示:您可以对任意多个选择器进行分组,CSS 对此没有任何限制。
嵌套选择器
它可能适用于选择器内部的选择器的样式。
在下面的例子设置了四个样式:
p : 为所有 p 元素指定一个样式。
.marked : 为所有 class=”marked” 的元素指定一个样式。
.marked p : 为所有 class=”marked” 元素内的 p 元素指定一个样式。
p.marked : 为所有 class=”marked” 的 p 元素指定一个样式。
<style>
p
color:blue;
text-align:center;
.marked
background-color:red;
.marked p
color:white;
p.marked
text-decoration:underline;
</style>
<body>
<p>这个段落是蓝色文本,居中对齐。</p>
<div class="marked">
<p>这个段落不是蓝色文本。</p>
</div>
<p>所有 class="marked"元素内的 p 元素指定一个样式,但有不同的文本颜色。</p>
<p class="marked">带下划线的 p 段落。</p>
</body>
CSS Display(显示) 与 Visibility(可见性)
CSS display 属性和 visibility 属性都可以用来隐藏某个元素,但是这两个属性有不同的定义,请详细阅读以下内容。
display属性设置一个元素应如何显示,visibility属性指定一个元素应可见还是隐藏。
隐藏元素 – display:none 或 visibility:hidden
隐藏一个元素可以通过把 display 属性设置为 none,或把 visibility 属性设置为hidden。但是请注意,这两种方法会产生不同的结果。
visibility:hidden 可以隐藏某个元素,但隐藏的元素仍需占用与未隐藏之前一样的空间。也就是说,该元素虽然被隐藏了,但仍然会影响布局。
<style>
h1.hidden visibility:hidden;
</style>
<body>
<h1>这是一个可见标题</h1>
<h1 class="hidden">这是一个隐藏标题</h1>
<p>注意,隐藏标题仍然占用空间。</p>
</body>
display:none;
可以隐藏某个元素,且隐藏的元素不会占用任何空间。也就是说,该元素不但被隐藏了,而且该元素原本占用的空间也会从页面布局中消失。
<style>
h1.hidden display:none;
</style>
<body>
<h1>这是一个可见标题</h1>
<h1 class="hidden">这是一个隐藏标题</h1>
<p>注意,隐藏标题不占用空间.</p>
</body>
CSS Display – 块和内联元素
块元素是一个元素,占用了全部宽度,在前后都是换行符。
块元素的例子:
<h1>
<p>
<div>
内联元素只需要必要的宽度,不强制换行。
内联元素的例子:
<span>
<a>
如何改变一个元素显示
可以更改内联元素和块元素,反之亦然,可以使页面看起来是以一种特定的方式组合,并仍然遵循web标准。
下面的示例把列表项显示为内联元素:
li display:inline;
下面的示例把 span 元素作为块元素:
span display:block;
注意:变更元素的显示类型看该元素是如何显示,它是什么样的元素。
例如:一个内联元素设置为 display:block; 是不允许有它内部的嵌套块元素。
CSS Position 定位
position 属性指定了元素的定位类型。
position 属性的五个值:
static
relative
fixed
absolute
sticky
元素可以使用的顶部,底部,左侧和右侧属性定位。然而,这些属性无法工作,除非是先设定 position 属性。他们也有不同的工作方式,这取决于定位方法。
static 定位
HTML 元素的默认值,即没有定位,遵循正常的文档流对象。
静态定位的元素不会受到 top, bottom, left, right 影响。
div.static
position: static;
border: 3px solid #73AD21;
fixed 定位
元素的位置相对于浏览器窗口是固定位置。
即使窗口是滚动的它也不会移动:
<style>
p.pos_fixed
position:fixed;
top:30px;
right:5px;
</style>
</head>
<body>
<p class="pos_fixed">放置更多的文字</p>
<p><b>注意:</b> IE7和IE8支持只有一个!DOCTYPE指定固定值.</p>
<p>一些文字</p>
...
</body>
注意: Fixed 定位在 IE7 和 IE8 下需要描述 !DOCTYPE 才能支持。
Fixed 定位使元素的位置与文档流无关,因此不占据空间。
Fixed 定位的元素和其他元素重叠。
relative 定位
相对定位元素的定位是相对其正常位置。
<style>
h2.pos_left
position:relative;
left:-20px;
h2.pos_right
position:relative;
left:20px;
</style>
<body>
<h2>这是一个没以上是关于css基础 盒子模型border边框marginpaddingCSS分组和嵌套选择器Display(显示) 与 Visibility(可见性)Position 定位的主要内容,如果未能解决你的问题,请参考以下文章