Html 基础 二

标签的显示样式

块级标签

div
p
h
ul
ol
li

像h,p这种块级的标签,里面一般都是放文字

往他们里面放块级标签就会问题,比如往p标签里面放置div, 产生的结果如下

<p></p> <div> </div><p></p>

行内元素

a
span
strong
b
em
i
del
s
ins
  • 所有的行内元素都在一行上,他的高和宽取决于内容的宽度和高度,我们自定义的高宽无效
  • 行内元素中一般放文本或者其他的行内元素
  • 可以把行内元素看作是文本

a标签里面不能再放a标签

a里面可以放块级元素,比如一张图片

行内块元素

input 
img
td

像上面的input,img,td等标签的可以设置宽高,我们称其为行内块元素

  • 默认的宽高就是标签里面内容的宽高,但是我们也可以通过css控制
  • 他们可以和相邻的行内元素在一行上,但是彼此之间会通过空格间隔开
  • 高度,宽度,内边距,外边距都可以通过css控制
  • 可以把行内块元素看作是文本

标签的显示模式相互转换

x{
   display:inline
   display:block
   display:inline-block
}

导航栏案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        nav{
            text-align: center;
        }
        a{
            font-size: 20px;
            color: #333333;
            /*行高等于盒子高,可以让文本上下居中*/
            line-height: 50px;
            text-decoration:none;
            text-align:center;
            background-color: pink;
            width: 150px;
            height: 50px;
            display: inline-block;
        }
        a:hover{
            background-color:aqua;
        }s
    </style>
</head>
<body>
<nav id="nav">
    <a href="#">导航栏</a>
    <a href="#">导航栏</a>
    <a href="#">导航栏</a>
    <a href="#">导航栏</a>
    <a href="#">导航栏</a>
    <a href="#">导航栏</a>
</nav>
</body>
</html>

行高问题

基线和基线之间的距离我们成为行高。

比如红色线圈出来的距离就是行高

如何让一行字在盒子中垂直居中?

做法是: 让行高 = 盒子高 , 例如下

div{
	line-height: 10px;
	height: 10px
}

CSS的三大特性

层叠样式表

像下面这样,最终a标签中文字的大小是30px,颜色是aqua。 原因如下:

  • 多个css样式都修饰同一个标签,那么距离标签距离近的css样式生效
  • 层叠时仅仅会层叠掉冲突的样式。
<!DOCTYPE html>
<html lang="en">
<head>	
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
       a {
           color: #000;
           font-size: 30px;
       }
        a {
            color: aqua;
        }
    </style>
</head>
<body>
<nav id="nav">
    <a href="#">导航栏</a>
   
    <a href="#">导航栏</a>
</nav>
</body>
</html>

继承性

下面的示例效果是:span标签中的元素被修饰成水蓝色, 这就是发生的css的继承性,span的css样式继承了nav的css样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        nav {
            color: aqua;
        }
    </style>
</head>
<body>
<nav id="nav">
    <span>this is span</span>
</nav>
</body>
</html>

优先级

方式 贡献值
继承或者是* 0000
元素标签 0001
类,伪类 0010
ID 0100
行内样式 1000
!important 无穷大

了解了这个贡献值之后,结合贡献值和继承性看下css生效的法则

span作为标签选择器,他的贡献值是0001

nav span这种子选择器,span会继承到nav的贡献值0001,加上自己的0001,累计得到0002 , 所以颜色最终是 水蓝色

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        span {
            color: red;
        }
        nav span{
            color: aqua;
        }
    </style>
</head>
<body>
<nav id="nav">
    <span>this is span</span>
</nav>
</body>
</html>

背景

可以像下面这样为html添加背景图片, 但是这种样式会导致,如果图片不够大,就会有n张图片去平铺在html上,很丑。

body {
       background-image: url(1.jpg);
}

控制图片是否平铺,以及在哪个方向上平铺

body {
    background-image: url(https://img2020.cnblogs.com/blog/1496926/202005/1496926-20200516153748553-546111038.png);
    background-repeat: repeat;/*默认值,在横向和纵向上都会产生平铺效果*/
    background-repeat: no-repeat;/*无论图片多大,都不会产生平铺*/
    background-repeat: repeat-x;/*横向上平铺*/
    background-repeat: repeat-y;/*纵向上平铺*/
}

控制图片在盒子中的位置:

background-position: x y;

其中的x y 可以是方位词,如 center,left, right,top,bottom
也可以是 像素值

示例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
       div {
           height: 600px;
           width: 600px;
           background-color: aqua;
           background-image: url(1.jpg);
           background-repeat: no-repeat;
           background-position: center center;
       }
    </style>
</head>
<body>
    <div>
    </div>
</body>
</html>

效果:

设置背景图是否跟着滚动条的滚动而滚动

bady{
    background-image: url(https://img2020.cnblogs.com/blog/1496926/202005/1496926-20200516153748553-546111038.png);
    /*不会随着滚动条的滚动而发生变化,默认值是scroll,会随着滚动条的滚动而滚走*/
    background-attachment: fixed; 
}

购物车案例

实现给a标签添加一张背景图片,添加的背景图片默认的属性是: 不平铺,靠左上角对齐,我们要实现的效果就是当鼠标经过a标签时,让图片往上移动,按左下角对齐。来实现动画的效果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
       a {
           height: 208.5px;
           width: 500px;
           display: block;
           background-image: url(./1.jpg);

       }
        a:hover {
            background-position: left bottom;
        }
    </style>
</head>
<body>
<a href="#"></a>
</body>
</html>

背景半透明

主要使用的是下面的background:rgba()

r: red

g:green

b:blue

000是纯黑色 fff是纯白色

a:alpha 透明度。 取值范围是0~1

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        body {
            background-color: pink;
        }
        div {
            height: 200px;
            width: 200px;
            background: rgba(0, 0, 0 ,0.3);
        }
    </style>
</head>
<body>
    <div>
        this is div
    </div>
</body>
</html>

盒子模型

盒子边框border

通过下面的css可以为盒子添加上边框

div {
   width: 200px;
   height: 200px;
   border: solid;
}

通过border可以为盒子设置边框,有如下的选项
solid: 实线
none: 默认值,没有边框
dashed:边框是虚线
dotted:边框为点线
double:边框为双实线

还可以单独为某一个边设置边框
border-left
border-right
border-top
border-bottom

比如:
border-left: 1px solid red;

表格细线边框

一个表格,默认是会长成下面这样

table{
    width: 300px;
    height: 300px;
    border: 1px solid;
}
td {
    border: 1px solid;
    text-align: center;
}
table, td {
    border-collapse: collapse;
}

盒子内边距

如果盒子中有内容的话,默认的会贴着左上角对齐,如果这时如果我们想改变盒子中的内容在盒子中的位置,可以通过设置盒子的内边距来实现。

盒子的内边距增大后(盒子变厚),盒子中的内容就会被内边距挤动。

div {
    /*设置上下左右均为10px*/
    padding: 10px;
}

div {
    /*设置上下10px,左右20px*/
    padding: 10px 20px;
}

div {
    /*设置上10px,左右15px ,下20px*/
    padding: 10px 15px 20px;
}

div {
    /*设置上10px,左15px ,右30px,下20px*/
    padding: 10px 15px 30px 20px;
}

当我们为盒子设置padding时,附带的影响就是padding会将盒子撑开

解决的方式:我们添加了多少的padding,对着应必须从width和height中将其减下去。

清除所有的内外边距

默认的body标签会有一个外边距,通过下面的方式可以清除这个外边距,让页面中的元素紧贴在浏览器边框上,显得更加美观。

* {
   margin: 0;
   padding: 0;
}

案例新闻列表

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        body {
            background-color: #eee;
        }
        .article {
            width: 378px;
            height: 263px;
            border: 1px solid #ccc;
            margin: 100px;
            padding:20px 16px 0;
        }
        .article h4 {
            color: #202026;
            font-size: 21px;
            border-bottom: 1px solid;
            padding-bottom: 2px;
        }
        .article ul {
            margin-top: 12px;
        }
        .article li {
            height: 28px;
            line-height: 28px;
            list-style:none;
            padding: 5px 20px;
            border-bottom: 1px dashed #cccccc;
        }
        .article li a{
              text-decoration: none;
              font-size: 16px;
              color: #333;
          }
        .article li a:hover{
            text-decoration: underline;
        }
    </style>
</head>
<body>
<div class="article-box">
    <div class="article">
        <h4 >最新新闻/New Article</h4>
        <ul>
            <li><a href="#">做一个有上进心的青年。</a></li>
            <li><a href="#">做一个有上进心的青年。</a></li>
            <li><a href="#">做一个有上进心的青年。</a></li>
            <li><a href="#">做一个有上进心的青年。</a></li>
        </ul>
    </div>
</div>
</body>
</html>

盒子水平居中

  • 让盒子中的内容居中对齐

    前面说text-aligin样式

div{
    /*他可以让div中的 文字,行内元素,行内块元素水平居中对齐*/
    text-align: center
}
  • 让盒子居中对齐
div {
    /*上下0,左右自适应*/
    margin: 0 auto;
}

/*或者是这种写法*/
div {
	margin: auto;
}


盒子的外边距合并问题

如下图,假设上盒子的下边距是20px,下盒子的上边距是10px, 理论上,上下盒子之间的间距应该是30px,但是浏览器会自动将将盒子之间的间距合并,以大值为准。而不是相加。

这个问题其实是可以直接避免的,比如我们想让两个盒子直接的间距保持在30px,我们直接给上盒子的下边距设置为30px, 或者是将下盒子的上边距离设置成30px就ok。

padding不会撑开盒子的情况

如果一个盒子给定了width,那么我们再设置padding时,就会将盒子撑开,想让盒子保持原来的状态,我们就得再宽高上减去盒子的padding值

但是,下面这种情况下,padding不会撑开盒子, 原因是son并没有指定宽度,他的只会撑满父盒子。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .father {
            width:200px;
            height: 150px;
            background-color: pink;
        }
        .son {
            padding: 20px;
        }
    </style>
</head>
<body>
<div class="article-box">
   <div class="father">
       <div class="son">123</div>
   </div>
</div>
</body>
</html>

圆角边框

div {
    width: 20px;
    height: 20px;
    border-radius: 50%;
}

圆角练习

<!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <style>
            body {
                background-color: #eee;
            }
            .dv {
                text-align: center;
            }
            a {
                width: 200px;
                height: 200px;
                display: inline-block;
                color: #f40;
                font-weight: 700;
                font-size: 18px;
                border-radius: 50%;
                text-decoration: none;
                background-color: #fff;
                line-height: 200px;
                margin: 30px;
            }
            a:hover {
                background-color: #ff4400;
                color: #ffffff;
            }
        </style>
    </head>
    <body>
    <div class="article-box">
        <div class="dv">
            <a href="#">点我升级</a>
            <a href="#">点我升级</a>
            <a href="#">点我升级</a>
            <a href="#">点我升级</a>
        </div>
    </div>
    </body>
    </html>

盒子影子

语法格式:

box-shadow: 水平阴影 垂直阴影 模糊距离 阴影尺寸 阴影颜色 内/外阴影
水平阴影: h-shadow   必须
垂直阴影:  v-shadow   必须
模糊距离:  blur		  可选
阴影尺寸:  spread	  可选	
阴影颜色:  color	  可选
内/外阴影: inset      可选

例:
div {
 	box-shadow: 0 15px 30px rgba(0,0,0.4)   
}
posted @ 2020-05-16 15:39  赐我白日梦  阅读(225)  评论(0编辑  收藏  举报