页面布局

回顾

列表

  • 无序列表 ul li

  • 有序列表 ol li

  • 定义列表 dl dt dd

  • 相关css属性 list-style list-style-type list-style-image list-style-position

表格

  • 标签 table caption thead tbody tfoot tr th td

  • colspan rowspan td/th 的属性

  • CSS属性: table-layout、border-collapse 、border-sapcing、 caption-side、 empty-cells

表单

  • input type(text、password、radio、checkbox、file、url、email、tel、search、range、color、date、time、week、month、datetime-local、number、button、submit、reset)

  • select option

  • textarea

  • button

  • 属性:placeholder(H5)、disable、enable、readonly、 required、pattern、 autocomplete=“on/off” title autofocus

视频

  • video src autoplay loop poster preload controls

  • audio src

  • source src

页面布局

有些CSS属性,后代元素会集成祖先元素的设置。font类型、color、文本属性

有些CSS属性,不会继承祖先元素。布局相关、border、背景

1 盒子模型

1.1 定义

  • 任意一个元素都可以当做盒子模型

  • 盒子的大小 内容宽高(width/height) + 边距(padding)+边框(border)

  • 盒子有外边距,影响盒子的位置

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>盒子模型</title>
 6     <style>
 7         #box {
 8             width: 300px;
 9             height: 300px;
10             padding: 20px;
11             border: 5px solid orange;
12 
13             /*外边距*/
14             margin: 20px;
15 
16             background: pink;
17         }
18     </style>
19 </head>
20 <body>
21     <h1>盒子模型</h1>
22     <hr>
23 
24     <div id="box">
25         Lorem ipsum dolor sit amet.
26     </div>
27 </body>
28 </html>
盒子模型

1.2 块状元素和内联元素

块状(块级)

  • 能够独占一行

  • 默认宽度是父元素的宽,高度是自动(被内容撑开)

内联(行内)

  • 不能独占一行

  • 默认宽度是自动(被内容撑开),高度也是自动

  • 大部分内联元素设置宽高无效,设置内边距有效但是影响其他元素

  • margin可以设置左右,不能设置 上下的

  • CSS的文本属性 会对内联元素生效

补充:

 1.块级元素:

     在html中<div>、 <p>、<h1>、<form>、<ul> 和 <li>就是块级元素。设置display:block就是将元素显示为块级元素。块级元素特点:

      (1)、每个块级元素都从新的一行开始,并且其后的元素也另起一行;(一个块级元素独占一行)

      (2)、元素的高度、宽度、行高以及顶和底边距都可设置;

      (3)、元素宽度在不设置的情况下,是它本身父容器的100%(和父元素的宽度一致),除非设定一个宽度。

      2.内联元素:

      在html中,<span>、<a>、<label>、<input>、 <img>、 <strong> 和<em>就是典型的内联元素(行内元素)(inline)元素。当然块状元素也可以通    过代码display:inline将元素设置为内联元素。内联元素特点:

       (1)、和其他元素都在一行上;

       (2)、元素的高度、宽度、行高及顶部和底部边距不可设置;

       (3)、元素的宽度就是它包含的文字或图片的宽度,不可改变。

      注意:为 a 元素设置了宽和高,但都没有起到作用,原因是a在默认的时候是内联元素,内联元素是不可以设置宽和高的。

     3.内联块状元素:

      内联块状元素(inline-block)就是同时具备内联元素、块状元素的特点,代码display:inline-block就是将元素设置为内联块状元素。inline-block元素特点:

       (1)、和其他元素都在一行上;

       (2)、元素的高度、宽度、行高以及顶和底边距都可设置。

       注意:img是inline元素,但是他同时也是替换元素,他有着特殊的表现:

          1. 可以设置width/height;

          2. 默认的,img元素在屏幕占据的空间与其图片的实际像素一致,除非CSS有设置或者自身的width/height HTML 属性有设置;

          3. 如果img标签的包裹元素为也为inline元素,则img的边界可以超出其直接父元素的边界,直到自己的宽、高达到最大或者设定值为止,而且文档流中img的兄弟元素也不能遮盖住img。最常见的就是<a>里面包含的<img>;

          4. 所以从行为上看,img元素作为替换元素,有着类似于Inline-block的行为,尽管在SPEC里面,他的确是一个inline元素。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>块状元素和内联元素</title>
 6     <style>
 7         h1 {width: 300px;}
 8         body {
 9             width: 200px;
10         }
11 
12         strong {
13             width: 200px;
14             height: 100px;
15             padding: 20px;
16             border: 1px solid red;
17         }
18         
19         div {
20             border: 1px solid red;
21             padding: 50px;
22         }
23 
24 
25     </style>
26 </head>
27 <body>
28     <h1>块状元素和内联元素</h1>
29     同志你好
30     <hr>
31 
32     <div>
33         Lorem ipsum dolor sit amet.
34     </div>
35 
36     <a href="#">同志</a>
37     你好
38 
39     <hr>
40 
41     <strong>我很状</strong>
42 
43     
44 </body>
45 </html>
块状元素和内联元素

1.3 盒子模型和盒子模型之间的关系

document树

父元素  子元素   后代元素   祖先元素    兄弟元素

标准文档流

  • 块状元素 独占一行

  • 内联共享一行

盒子在文档模型的位置

  • 给盒子设置边距, 前面有兄弟元素,距离兄弟元素的距离。 没有距离父元素的内容的距离

  • 垂直方向的margin会塌陷。 上(margin-bottom)下(margin-top)两个元素之间的距离,取最大。 水平方向没有这个问题

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>盒子模型关系</title>
 6     <style>
 7         #box {
 8             width:200px;
 9             height:200px;
10             background: #ccc;
11             /*border: 1px solid red;*/
12             overflow: hidden;
13         }
14 
15         #inner {
16             margin-left:50px;
17             margin-top: 50px;
18             width: 100px;
19             height: 100px;
20             background: orange;
21         }
22     </style>
23 </head>
24 <body>
25     <h1>盒子模型关系</h1>
26     <hr>
27 
28     <div id="box">
29         <div id="inner"></div>
30     </div>
31 
32 </body>
33 </html>
父子元素margin塌陷
  • 父子元素,给子元素设置垂直方向的margin,同样会产生塌陷。 解决: 给父元素设置边框 或者 overflow:hidden

  • margin可以设置为负值

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>盒子模型关系</title>
 6     <style>
 7         #box01 {
 8             border:1px solid red;
 9             padding: 10px;
10         }
11         .item {
12             width: 100px;
13             height: 100px;
14             background: pink;
15             border: 1px dashed orange;
16         }
17 
18         .item01 {
19             margin-top: 10px;
20             margin-left: 10px;
21             margin-bottom: 30px;
22         }
23 
24         .item02 {
25             margin-top:40px;
26         }
27 
28         #box02 span {
29             border:1px solid pink;
30             background: #ccc;
31         }
32 
33         #box02 {
34             border: 1px solid red;
35         }
36 
37         .span01 {
38             margin-top: 20px;
39             margin-left: 20px;
40             margin-right:20px;
41         }
42         .span02 {
43             margin-left: 10px;
44         }
45     </style>
46 </head>
47 <body>
48     <h1>盒子模型关系</h1>
49     <hr>
50 
51     <div id="box01">
52         <div class="item item01">1</div>
53         <div class="item item02">2</div>
54         <div class="item">3</div>
55         <div class="item">4</div>
56     </div>
57 
58     <hr>
59 
60     <div id="box02">
61         <!--内联元素-->
62         <span class="span01">1</span><span class="span02">2</span><span>3</span><span>4</span>
63     </div>
64 
65 </body>
66 </html>
盒子模型位置关系

1.4 布局相关属性

display

  • block 设置块

  • inline 设置为内联

  • inline-block 兼具两者 有些html元素,默认就是inline-block (img, input, textarea .td,th)

  • none 隐藏

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>文本属性-同志交友</title>
 6     <style>
 7         #box {
 8             width:400px;
 9             height: 200px;
10             border: 1px dashed pink;
11             background:#ccc;
12 
13             text-align: center;
14             line-height: 200px;
15         }
16 
17         #box p {
18             width: 200px;
19             border:1px solid orange;
20             padding:10px;
21         }
22 
23         #box a{
24             border: 1px solid red;
25         }
26     </style>
27 </head>
28 <body>
29     <div id="box">
30         <!---->
31         <p>Lorem ipsum dolor sit amet.</p>
32 
33         <!--内联-->
34         <a href="#">超链接</a>
35     </div>
36 </body>
37 </html>
文本属性中的块级和内联

布局相关

  • visibility: visible/hidden

  • overflow: hidden/auto/scroll/visible

  • overflow-x

  • overflow-y

尺寸

  • width / max-width / min-width

  • height / max-height / min-height

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>display</title>
 6     <style>
 7         .item {
 8             width:100px;
 9             height:100px;
10             background:#ccc;
11             border:1px solid pink;
12 
13             /*把块->内联*/
14             display: inline;
15         }
16 
17         #box02 a{
18             width:100px;
19             height:100px;
20             background:#f5f5f5;
21             border:1px solid red;
22 
23             /*内联 块*/
24             display: block;
25         }
26 
27         .product-box {
28             display: block;
29             padding: 10px;
30             width: 150px;
31             border:1px solid #ccc;
32         }
33         .product-box img{
34             width:150px;
35         }
36 
37         .list {
38             list-style: none;
39             text-align: center;
40             font-size:0px;
41         }
42         .list li {
43             width: 100px;
44             height: 100px;
45             border:1px solid pink;
46             background: #ccc;
47             padding:10px;
48             /*margin:20px;*/
49 
50             /*设置为 inline-block*/
51             display:inline-block;
52 
53             font-size:16px;
54         }
55     </style>
56 </head>
57 <body>
58     <div id="box">
59         <div class="item">1</div>
60         <div class="item">2</div>
61         <div class="item">3</div>
62         <div class="item">4</div>
63     </div>
64 
65     <hr>
66 
67     <div id="box02">
68         <a href="#">1</a>
69         <a href="#">2</a>
70         <a href="#">3</a>
71         <a href="#">4</a>
72     </div>
73 
74     <a href="1.html" class="product-box">
75         <div class="product">
76             <img src="../../dist/images_one/10.jpg" alt=""> <!--内联-->
77             <h3>商品</h3>
78             <p>
79                 Lorem ipsum dolor sit amet,
80             </p>
81         </div>
82         
83     </a>
84 
85     <hr>
86 
87 
88     <ul class="list">
89         <li>1</li>
90         <li>2</li>
91         <li>3</li>
92         <li>4</li>
93     </ul>
94 
95     <img src="../../dist/images_one/10.jpg" alt="">
96     <img src="../../dist/images_one/10.jpg" alt="" style="display: none">
97 </body>
98 </html>
布局相关的css属性

内边距

外边距

  • margin 4个值 3 2 1

  • margin-left

  • margin-top

  • margin-bottom

  • margin-right

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>相关属性</title>
 6     <style>
 7         #box {
 8             width:100px;
 9             height:100px;
10             background: red;
11 
12             /*visibility: hidden;*/
13             display: none;
14         }
15 
16         .box {
17             width: 200px;
18             height: 200px;
19             border: 2px solid red;
20 
21             /*控制子元素的显示*/
22             /*overflow: hidden; /*隐藏溢出的部分*/
23             /*overflow: scroll;  出现滚动条*/
24              /*overflow: auto; 出现滚动条*/
25 
26              overflow-y:hidden;
27         }
28 
29         .box ul {
30             width:500px;
31         }
32     </style>
33 </head>
34 <body>
35     <h1>相关属性</h1>
36     <hr>
37 
38     <div id="box">
39         
40     </div>
41 
42     <p>Lorem ipsum dolor sit amet.</p>
43 
44     <hr>
45 
46     <div class="box">
47         <ul>
48             <li>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Possimus modi repellat, laudantium asperiores dolor aliquid quae vitae quaerat delectus debitis magni nihil dolore voluptates facilis labore aut iure sit sint!</li>
49             <li>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Possimus modi repellat, laudantium asperiores dolor aliquid quae vitae quaerat delectus debitis magni nihil dolore voluptates facilis labore aut iure sit sint!</li>
50             <li>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Possimus modi repellat, laudantium asperiores dolor aliquid quae vitae quaerat delectus debitis magni nihil dolore voluptates facilis labore aut iure sit sint!</li>
51             <li>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Possimus modi repellat, laudantium asperiores dolor aliquid quae vitae quaerat delectus debitis magni nihil dolore voluptates facilis labore aut iure sit sint!</li>
52         </ul>
53     </div>
54 
55 </body>
56 </html>
布局相关属性

 最大宽和最小宽(max-width和min-width)

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>    </title>
 6     <style>    
 7         div {
 8             display: inline-block;
 9 
10             /*max- 300px; 对块状有用*/
11             min-width: 300px;  /*对inline-block 有用*/
12             border: 1px solid red;
13         }
14     </style>
15 </head>
16 <body>
17     <div>    
18             Lorem ipsum dolor sit amet.
19 
20     </div>
21 </body>
22 </html>
最大宽和最小宽

作业

  • 总结学过的元素, 块 内联 (inline-block的特征)

  • 总结所有的HTML元素, 所有的CSS属性。

原文地址:https://www.cnblogs.com/Roc-Atlantis/p/9395739.html