手把手教你系列之CSS基础-上

1,397 阅读8分钟

前言

书接上回没有看我写的手把手教你系列之html基础的赶紧去看一下吧!!!如果把一个网页比作人的的话,那么html就相当于人的骨架,那么我们的CSS就相当于人的衣服。没错CSS就是来给网页设置各种漂亮的样式的,比如:字体的颜色、大小、背景颜色等等。

正文

块儿级元素

常见的块元素有<h1>~<h6>、<p>、<div>、<ul>、<ol>、<li>等,其中<div>标签是最典型的块元素。
  • 块级元素的特点

(1)比较霸道,自己独占一行

(2)高度,宽度、外边距以及内边距都可以控制。

(3)宽度默认是容器(父级宽度)的100%

(4)是一个容器及盒子,里面可以放行内或者块级元素。

  • 注意:
    • 只有 文字才 能组成段落 因此 p 里面不能放块级元素,特别是 p 不能放div
    • 同理还有这些标签h1,h2,h3,h4,h5,h6,dt,他们都是文字类块级标签,里面不能放其他块级元素。

行内元素

常见的行内元素有<a><strong><b><em><i><del><s><ins><u><span>等,其中<span>标签最典型的行内元素。有的地方也成内联元素
  • 行内元素的特点:

(1)相邻行内元素在一行上,一行可以显示多个。

(2)高、宽直接设置是无效的。

(3)默认宽度就是它本身内容的宽度。

(4)行内元素只能容纳文本或则其他行内元素。

  注意:
  • 链接里面不能再放链接。
  • 特殊情况a里面可以放块级元素,但是给a转换一下块级模式最安全。

行内块元素

在行内元素中有几个特殊的标签——<img />、<input />、<td>,可以对它们设置宽高和对齐属性,有些资料可能会称它们为行内块元素。

行内块元素的特点:

(1)和相邻行内元素(行内块)在一行上,但是之间会有空白缝隙。一行可以显示多个

(2)默认宽度就是它本身内容的宽度。

(3)高度,行高、外边距以及内边距都可以控制。

各个模式转换

  • 块转行内:display:inline;
  • 行内转块:display:block;
  • 块、行内元素转换为行内块: display: inline-block;

各种选择器

  • 标签选择器

    h1 { color:red }

  • 类选择器

    .div1 { color:red; }

  • id选择器

    #div1 { color:red; }

  • 通配符选择器

    • { margin:0; padding:0; }

选择器优先级

微信截图_20210704182951.png

权重叠加

我们经常用交集选择器,后代选择器等,是有多个基础选择器组合而成,那么此时,就会出现权重叠加。

就是一个简单的加法计算

  • div ul li ------> 0,0,0,3

  • .nav ul li ------> 0,0,1,2

  • a:hover -----—> 0,0,1,1

  • .nav a ------> 0,0,1,1

    注意:

  1. 数位之间没有进制 比如说: 0,0,0,5 + 0,0,0,5 =0,0,0,10 而不是 0,0, 1, 0, 所以不会存在10个div能赶上一个类选择器的情况。

3). 继承的权重是0

这个不难,但是忽略很容易绕晕。其实,我们修改样式,一定要看该标签有没有被选中。

1) 如果选中了,那么以上面的公式来计权重。谁大听谁的。 2) 如果没有选中,那么权重是0,因为继承的权重为0.

伪类选择器

  • a:link /* 未访问的链接 */
  • a:visited /* 已访问的链接 */
  • a:hover /* 鼠标移动到链接上 */
  • a:active /* 选定的链接 */

行高

  • 如果 行高 等 高度 文字会 垂直居中
  • 如果行高 大于 高度 文字会 偏下
  • 如果行高小于高度 文字会 偏上

背景

1.png

盒子模型

一个盒子的宽度等于他的宽度+padding+border.

盒子水平居中和内容水平居中

text-align: center; /*  文字 行内元素 行内块元素水平居中 */
margin: 10px auto;  /* 块级盒子水平居中  左右margin 改为 auto 就阔以了 上下margin都可以 */

浮动

div {
	float:left
}

清除浮动

清除浮动是为了解决,在不方便给父盒子高度的时候。子盒子由于浮动而引起父盒子高度为零从而影响了下面的块元素。

 .clearfix:after {  content: ""; display: block; height: 0; clear: both; visibility: hidden;  }   

 .clearfix {*zoom: 1;}
 
 <div class="clearfix">
 	<div></div>
 </div>

定位

让盒子定位在某个地方

选择器 { position: 属性值; }

2.png

相对定位relative

相对定位是元素相对于它 原来在标准流中的位置 来说的。(自恋型)

相对定位的特点:(务必记住)

  • 相对于 自己原来在标准流中位置来移动的
  • 原来在标准流的区域继续占有,后面的盒子仍然以标准流的方式对待它。

绝对定位absolute

绝对定位是元素以带有定位的父级元素来移动位置 (拼爹型)

  1. 完全脱标 —— 完全不占位置;
  2. 父元素没有定位,则以浏览器为准定位(Document 文档)。

绝对定位的特点:(务必记住)

  • 绝对是以带有定位的父级元素来移动位置 (拼爹型) 如果父级都没有定位,则以浏览器文档为准移动位置
  • 不保留原来的位置,完全是脱标的。

因为绝对定位的盒子是拼爹的,所以要和父级搭配一起来使用。

定位口诀 —— 子绝父相

刚才咱们说过,绝对定位,要和带有定位的父级搭配使用,那么父级要用什么定位呢?

子绝父相 —— 子级是绝对定位,父级要用相对定位。

子绝父相是使用绝对定位的口诀,要牢牢记住!

固定定位fixed

固定定位是绝对定位的一种特殊形式: (认死理型) 如果说绝对定位是一个矩形 那么 固定定位就类似于正方形

  1. 完全脱标 —— 完全不占位置;
  2. 只认浏览器的可视窗口 —— 浏览器可视窗口 + 边偏移属性 来设置元素的位置;
    • 跟父元素没有任何关系;单独使用的
    • 不随滚动条滚动。

定位改变display属性

前面我们讲过, display 是 显示模式, 可以改变显示模式有以下方式:

  • 可以用inline-block 转换为行内块
  • 可以用浮动 float 默认转换为行内块(类似,并不完全一样,因为浮动是脱标的)
  • 绝对定位和固定定位也和浮动类似, 默认转换的特性 转换为行内块。

所以说, 一个行内的盒子,如果加了浮动、固定定位和绝对定位,不用转换,就可以给这个盒子直接设置宽度和高度等。

堆叠顺序(z-index)

在使用定位布局时,可能会出现盒子重叠的情况。

加了定位的盒子,默认后来者居上, 后面的盒子会压住前面的盒子。

应用 z-index 层叠等级属性可以调整盒子的堆叠顺序。

z-index 的特性如下:

  1. 属性值:正整数、负整数或 0,默认值是 0,数值越大,盒子越靠上;
  2. 如果属性值相同,则按照书写顺序,后来居上;
  3. 数字后面不能加单位。

注意:z-index 只能应用于相对定位、绝对定位和固定定位的元素,其他标准流、浮动和静态定位无效。

鼠标样式cursor

3.png

轮廓线 outline

是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。

 outline : outline-color ||outline-style || outline-width 

但是我们都不关心可以设置多少,我们平时都是去掉的。 li

最直接的写法是 : outline: 0; 或者 outline: none;

 <input  type="text"  style="outline: 0;"/>

防止拖拽文本域resize

<textarea  style="resize: none;"></textarea>

vertical-align 垂直对齐

vertical-align 不影响块级元素中的内容对齐,它只针对于行内元素或者行内块元素,

特别是行内块元素, 通常用来控制图片/表单与文字的对齐。

去除图片底侧空白缝隙

  • 给img vertical-align:middle | top| bottom等等。 让图片不要和基线对齐。
  • 给img 添加 display:block; 转换为块级元素就不会存在问题了。

溢出的文字省略号显示

/*1. 先强制一行内显示文本*/
white-space: nowrap;
/*2. 超出的部分隐藏*/
overflow: hidden;
/*3. 文字用省略号替代超出的部分*/
text-overflow: ellipsis;

定位水平居中

div {
	width:100px;
	height:100px;
	position:absolute;
	left:50%;
	margin-left:-50px;
}

三角形

div {

 	width: 0; 
    height: 0;
    line-height:0;
    font-size: 0;
	border-top: 10px solid red;
	border-right: 10px solid green;
	border-bottom: 10px solid blue;
	border-left: 10px solid #000; 

 }
  1. 我们用css 边框可以模拟三角效果
  2. 宽度高度为0
  3. 我们4个边框都要写, 只保留需要的边框颜色,其余的不能省略,都改为 transparent 透明就好了
  4. 为了照顾兼容性 低版本的浏览器,加上 font-size: 0; line-height: 0;

结语

打完收工,由于CSS要讲的东西很多,这边分为上下两篇来讲,下一篇将介绍手把手教你系列之CSS基础-下敬请期待!!!