web之CSS心得分享

1、CSS介绍

  • CSS指层叠样式表(Cascading Style Sheets)

  • 样式定义如何显示HTML元素

  • 样式通常存储在样式表中

  • 把样式添加到CSS文件中,是为了解决内容与变现分离的问题

  • 外部样式表可以极大提高工作效率

  • 尾部样式表通常存储在CSS文件中

  • 多个样式定义可层叠为一个

2、两个常用容器

div

  • div(diversion)就是划分的意思。

  • 主要是用来CSS布局用的,是常见的块级布局标签

span

  • span常见的行级布局标签,主要用来包裹文字的,给文字设置样式

  • 作用:想通过CSS给文字调整大小,设置颜色,设置字体类型可以使用算盘标签

3、CSS语法

语法格式

CSS规则由两个主要的部分构成:选择器,以及一条或多条声明;

选择器:通常是您需要改变样式的HTML元素;

每条声明由一个属性和一个值组成。

属性(property)是妮妮希望设置的样式属性(style attribute)。

每个属性有一个值。属性和值被冒号分开

4、CSS的三种引入方式

行间引入:内联样式

弊端:重复代码、代码冗余、可读性极差、没有实现样式与结构的分离。

优点:书写简单、CSS样式的优先级

style = ”属性名1:属性值;属性名2:属性值;...”

内部引入:内部样式

缺点:没有从本子上实现样式与结构的分离。

优点:样式复用、代码精简、可读性强。

<style type="text/css">
    标签名{
        属性名1:属性值;
        属性名2:属性值;
        。。。
    }
</style>

外部引用:外部样式

样式写在CSS文件中,用link调用,link标签可以出现多次,用于连接外部的多个CSS文件

【注】如果有相同属性重复设置,则有覆盖效果,以最后一次设置为准,

.js文件中
标签名{
        属性名1:属性值;
        属性名2:属性值;
        。。。
    }
.html文件中
<head>
    <link rel = "stylesheet" type = "text/css" href = ".js文件路径" />
</head>

5、样式优先级

样式表允许以多种方式规定样式信息。样式可以规定在单个的 HTML 元素中,在 HTML 页的头元素中,或在一个外部的 CSS 文件中。甚至可以在同一个 HTML 文档内部引用多个外部样式表。

一般情况下,优先级如下:

内联样式)Inline style > (内部样式)Internal style sheet >(外部样式)External style sheet > 浏览器默认样式

行间引用 > 内部引用 行间引用 > 外部引用

【注】内部引用、 外部引用 看引用的位置先后顺序,谁在后相同样式就一最后一个为准。

代码提示快捷键:Alt + /

6、常用的选择器

标签选择器

  • 标签名(CSS声明)

id选择器

  • 操作的前提:操作内容必须有id属性;

  • id的名称要求唯一;

  • +id名称(CSS声明)

  • 场景:对于多个相同的标签,操作其中的一个。

类选择器/class选择器

  • .class名称(点class名称)

  • 操作前提:操作内容必须有class属性

  • 可以为多个内容设置相同class属性

  • 场景:可以同时为多个内容设置CSS样式

后代选择器

  • 后代选择器

  • 找出指定的标签所有符合条件的后代标签,儿子级、孙子及重孙及。。。

div p{
    color: red;
} 
div标签下所有p标签设置为红色

子代选择器

找出指定的标签所偶符合条件的子代标签

标题名>子代标签名

div>p{
    color: blue;
}
div下子集p标签才会被设置为蓝色
示例

属性选择器

  • [title]选择所有包含title属性的内容;

  • [title="值"]选择所有包含title属性,并且值为“值”的内容

<style>
    [title]{
        color: red;
    }
    [title="num1"]{
        font-style: italic;
        font-size: 10px;
    }
</style>

<h2 title="num1">标题二</h2>
<h2 title="num2">标题二</h2>
<h2 title="num3">标题二</h2>

通配符选择器

  • *(CSS声明)

  • 用途一:基本设置;

  • 用途二:清除浏览器的默认样式

*{
    margin: 0;
    padding: 0;
}

first-child 伪类

您可以使用 :first-child 伪类来选择父元素的第一个子元素。

选择器匹配任何元素的第一个子元素的 <p> 元素:
p:first-child{
    color:blue;
}

选择器优先级

1.id选择器指定的样式 > 类选择器指定的样式 > 元素标签选择器指定的样式;

2. 对于相同类型选择器制定的样式,在样式表文件中,越靠后的优先级越高;

3. 如果要让某个样式的优先级变高,可以使用【!important】来指定;

7、常用标签样式

文本

  • color:设置文本样式
<div style="color: red;">一些文本。</div>
  • direction:设置文本方向

【注】倒序一定要加:unicode-bidi: bidi-override;

<html>
   <head>
       <meta charset="utf-8">
       <title></title>
       <style type="text/css">
           div.ex1 {
               direction:rtl;
               unicode-bidi: bidi-override;
           }
       </style>
   </head>
   <body>
       <div>一些文本。默认的书写方向。</div>
       <div class="ex1">一些文本。 Right-to-left 方向。</div>
   </body>
</html>
  • letter-spaceing:设置字符间距
<p id="text" style="letter-spacing: 1px;">
    提供了非常灵活的变量命名策略。
    变量名是大小写敏感的,且不包含语义,
    意思是说
</p>
  • line-height:设置行高
<p id="text" style="line-height: 30px;">
    提供了非常灵活的变量命名策略。<br>
    变量名是大小写敏感的,<br>
    意思是说且不包含语义,
</p>
  • text-align:对齐元素的文本
<p id="text" style="text-align: center;">
    提供了非常灵活的变量命名策略。<br>
    变量名是大小写敏感的,<br>
    意思是说且不包含语义,
</p>
  • text-decoration:项文本添加修饰

    主要是添加:下划线、上划线、删除线

    格式:text-decoration:【1】【2】【3】【4】;

    【1】【2】可以是:overline:上划线 line-through:删除线 underline:下划线

    【3】可以是:dotted:虚线 wavy:波浪线

    【4】颜色

    【注】【1】必须有,其他可选。

<style type="text/css">
    #a1{/*上划线*/
        text-decoration: overline red;
    }
    #a2{/*删除线*/
        text-decoration: line-through red;
    }
    #a3{/*下划线*/
        text-decoration: underline red;
    }
    #a4{/*上下划线*/
        text-decoration: overline underline red;
    }
    #a5{/*下虚线*/
        text-decoration: underline dotted red;
    }
    #a6{/*下波浪线*/
        text-decoration: underline wavy red; 
    }
</style>

  • text-indent: 缩进元素中文本的首行
<p style="text-indent:50px ">
 变量名是大小写敏感的,
 且不包含语义,意思是说,
 不会根据变量的名字来区别对待它们。 
 (译者注:不会自动将全大写的
 变量识别为常量,也不会将有特定前后
 缀的变量自动识别为某种特定类型的变量,
 即不会根据变量名字,自动判断变量的任何属性
 </p>
  • text-shadow:设置文本阴影

    【格式】:text-shodow:h-shadow v-shadow blur color;

    【参数】:h-shadow:必需。水平阴影的位置。允许负值。

    v-shadow:必需。垂直阴影的位置。允许负值。

    blur:可选。模糊的距离。

    color:可选。阴影的颜色。

  • text-transform:控制元素中的字母

属性值:

none 默认。定义带有小写字母和大写字母的标准的文本。
capitalize 文本中的每个单词以大写字母开头。
uppercase 定义仅有大写字母。
lowercase 定义无大写字母,仅有小写字母。
inherit 规定应该从父元素继承 text-transform 属性的值。
  • unicode-bidi:设置或返回文本是否被重写
描述
normal 默认。不使用附加的嵌入层面。
embed 创建一个附加的嵌入层面。
bidi-override 创建一个附加的嵌入层面。重新排序取决于 direction 属性。
initial 设置该属性为它的默认值。请参阅 initial
inherit 从父元素继承该属性。请参阅 inherit

例:文字倒序,就需要将文本重写

<html>
<head>
<meta charset="utf-8"> 
<title>菜鸟教程(runoob.com)</title>
<style>
div.ex1
{
 direction:rtl;
 unicode-bidi:bidi-override;
}
</style>
</head>
<body>
​
<div>一些文本。默认的书写方向。</div>
<div class="ex1">一些文本 。从右向左的方向。</div>
​
</body>
</html>
  • vertical-align: 设置元素的垂直对齐

    对img的操作

<html>
 <head>
 <meta charset="utf-8" />
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <title></title>
 <style type="text/css">
 img.img1{
 vertical-align: calc(-50px);
 }
 img.img2{
 vertical-align: top;
 }
 img.img3{
 vertical-align: bottom;
 }
 </style>
 </head>
 <body>
 <p id="text">你好吗<img class="img1" width="100px" height="100px" src="img/123.png" >我很好</p>
 <p id="text">你好吗<img class="img2" width="100px" height="100px" src="img/123.png" >我很好</p>
 <p id="text">你好吗<img class="img3" width="100px" height="100px" src="img/123.png" >我很好</p>
 </body>
</html>
描述
baseline 默认。元素放置在父元素的基线上。
sub 垂直对齐文本的下标。
super 垂直对齐文本的上标
top 把元素的顶端与行中最高元素的顶端对齐
text-top 把元素的顶端与父元素字体的顶端对齐
middle 把此元素放置在父元素的中部。
bottom 把元素的底端与行中最低的元素的顶端对齐。
text-bottom 把元素的底端与父元素字体的底端对齐。
length
% 使用 "line-height" 属性的百分比值来排列此元素。允许使用负值。
inherit 规定应该从父元素继承 vertical-align 属性的值
  • white-space:设置元素中空白的处理方式
描述
normal 默认。空白会被浏览器忽略。
pre 空白会被浏览器保留。其行为方式类似 HTML 中的 <pre> 标签。
nowrap 文本不会换行,文本会在在同一行上继续,直到遇到 标签为止。
pre-wrap 保留空白符序列,但是正常地进行换行。
pre-line 合并空白符序列,但是保留换行符。
inherit 规定应该从父元素继承 white-space 属性的值。
  • word-spacing: 设置字间距
p{
 word-spacing:20px;
}
描述
normal 默认。定义单词间的标准空间。
length 定义单词间的固定空间。
inherit 规定应该从父元素继承 word-spacing 属性的值。

连接

  • a:link - 正常,未访问过的链接

  • a:visited - 用户已访问过的链接

  • a:hover - 当用户鼠标放在链接上时

  • a:active - 链接被点击的那一刻

【注】其中hover、active属性对所有标签都有效。
注意: 在 CSS 定义中,active 必须被置于 hover 之后,才是有效的。

列表

  1. 去掉样式
ul{
 list-style-type: none;
 padding: 0px;
 margin: 0px;
} 
  1. 改变圆点
ul{
 list-style-type:circle;/*圆形*/
 list-style-type:square;/*方形*/
 list-style-type:upper-roman;/*大写罗马字母*/
 list-style-type:lower-roman;/*小写罗马字母*/
 list-style-type:lower-alpha;/*小写字母*/
 list-style-type:supper-alpha;/*大写字母*/
}
  1. 添加自定义图片作为点
ul{
 list-style-type:none;
 padding:0px;
 margin:0px;
}
ul li{
 background-image: url(https://www.runoob.com/try/demo_source/sqpurple.gif);
 background-repeat:no-repeat;
 /* background-size: 10px; */
 padding-left:14px;
}

表格

边框

td{
 border: 1px solid black;
}

文本居中

td{
 text-align:right;/*左右对齐*/
 vertical-align:middle;/*上下对齐*/
}

盒子模型

通常设置的width和height指的是content的宽高,但实际中浏览器中却要将padding、border、margin一起加起来。也就是下面的计算公式:

最终元素的总宽度计算公式是这样的:

总元素的宽度=宽度+左填充+右填充+左边框+右边框+左边距+右边距。

元素的总高度最终计算公式是这样的:

总元素的高度=高度+顶部填充+底部填充+上边框+下边框+上边距+下边距。

边框

基本设置格式

border:width color style;

border:1px red solid;

单独设置样式

border-style:属性1 属性2 属性3 属性4;【上->右->下->左】

border-style:属性1 属性2 属性3;【上->左右->下】

border-style:属性1 属性2;【上下->左右】

border-style:属性1;【上下左右属性相同】

属性 作用
none: 默认无边框
dotted: 定义一个点线边框
dashed: 定义一个虚线边框
solid: 定义实线边框
double: 定义两个边框。 两个边框的宽度和 border-width 的值相同
groove: 定义3D沟槽边框。效果取决于边框的颜色值
ridge: 定义3D脊边框。效果取决于边框的颜色值
inset: 定义一个3D的嵌入边框。效果取决于边框的颜色值
outset: 定义一个3D突出边框。 效果取决于边框的颜色值

块级元素和行级元素

块级标签

p、div、h1~h6、ul、ol、li、dl、dt、dd

行内标签

span、i、b

行内块级标签

img、input、select

块级和行内之间的转换

display:inline;转换成行内元素 display:block;转换为块级元素 display:inline-block;转换成行内块级元素 display:none;隐藏元素

【注】隐藏一个元素可以通过把display属性设置为"none",或把visibility属性设置为"hidden"。但是请注意,这两种方法会产生不同的结果:

  • display:none;隐藏的元素不会占用原来占据的空间

  • visibility:hidden可以隐藏某个元素,但隐藏的元素仍需占用与未隐藏之前一样的空间。也就是说,该元素虽然被隐藏了,但仍然会影响布局。

浮动

字面意思是浮起来,动起来。自身浮动到上一层不占据原有空间,根据属性(left、right)移动位置,其余元素重新排列。

【注】浮动的元素不会覆盖其他元素,而其他元素将环绕与其周围。

<style>
img 
{
 float:left;
}
</style>
​
​
<body>
<p>
浮动元素之前的元素将不会受到影响。
</p>
<p>
<img src="img/123.png" width="95" height="84" />
元素的水平方向浮动,意味着元素只能左右移动而不能上下移动。
一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含
框或另一个浮动框的边框为止。
浮动元素之后的元素将围绕它。
浮动元素之前的元素将不会受到影响。
如果图像是右浮动,下面的文本流将环绕在它左边:
元素的水平方向浮动,意味着元素只能左右移动而不能上下移动。
一个浮动元素会尽量向左或向右移动,直到它的外边缘碰到包含
框或另一个浮动框的边框为止。
浮动元素之后的元素将围绕它。
浮动元素之前的元素将不会受到影响。
如果图像是右浮动,下面的文本流将环绕在它左边:
</p>

定位

格式

position:属性值;
top:20px;
bottom:30px;
left:30px;
right:90px
【注】任选两个即可定位;

属性值

属性值 作用
static 默认值,即没有定位,遵循正常的文档流对象。
fixed 元素的位置相对于浏览器窗口是固定位置。即使窗口是滚动的它也不会移动:
relative 相对定位元素的定位是相对其正常位置。移动相对定位元素,但它原本所占的空间不会改变。
absolute 绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<html>;absolute 定位使元素的位置与文档流无关,因此不占据空间。
sticky 基于用户的滚动位置来定位。用于导航栏
z-index z-index属性指定了一个元素的堆叠顺序(哪个元素应该放在前面,或后面)
img{
 position:absolute;
 left:0px;
 top:0px;
 z-index:-1;
}

描述

绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于<html>:

那么在使用绝对定位时需要将relative和absolute两个一起使用,relative用于父级,absolute用于子级。也就是大家所说的"子绝父相"

例子:

#box2{
 border: 1px red solid;
 background-color: yellow;
 padding: 50px;
 width: 300px;
 height: 400px;
 margin-top: 50px;
 margin-left: 100px;
 position: relative;
}
#content{
​
 border: 1px black solid;
 background-color: greenyellow;
 width: 300px;
 height: 400px;
 position: absolute;
 top: 100px;
 left: 100px;
}
<div id="box2">
 <div id="content"></div>
</div>

注意事项

【注】绝对定位如果父级不使用position:relative,而直接使用position:absolute绝对定位,这个时候将会以body标签为父级,使用position:absolute定义对象无论位于DIV多少层结构,都将会浮动起来以<body>为父级(参考级)进行绝对定位。

【注】定位只针对于父级的border的内边为原点(0,0)来进行定位,及红色边。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,012评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,628评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,653评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,485评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,574评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,590评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,596评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,340评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,794评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,102评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,276评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,940评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,583评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,201评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,441评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,173评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,136评论 2 352