CSS介绍

层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。CSS 能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。

<style type="text/css">
span{
color:red;
font-size:14px;
}
</style>
<body>
<span>css介绍</span>
</body>

上面就是一个典型的css样式,给span标签中的文本添加样式。

在我们学习css之前先来思考一个问题,为什么html标签上不直接改变样式,而要将文档结构和样式分离,分别用html和css来表示呢?

其实这样分离带来的好处显而易见,我总结了几点:

1. 可以实现样式重用,提高了工作效率。

2. 可以更加细致的分工开发。

3. 使文件结构更加清晰。

CSS常见的属性

字符颜色 color:red;

字号大小 font-size:40px;

背景颜色 background-color:blue;

加粗 font-weight:bold;

不加粗 font-weight:normal;

斜体 font-style:italic;

不斜体 font-style:normal;

下划线 text-decoration:underline;

没有下划线 text-decoration:normal;

基础选择器

标签选择器

<style>
div{
width:200px;
height:200px;
border:1px solid red;
}
</style>
<body>
<div> </div>
</body>

浏览器显示结果:

id选择器

<style>
#outdiv{
width:200px;
height:200px;
background-color:green;
}
</style>
<body>
<div id="outdiv"></div>
</body>

浏览器显示结果:

类选择器

<style type="text/css">
div{
border:1px solid red;
}
span{
margin-left: 20px;
border:1px solid blue;
}
.padding50{
padding: 50px;
}
.floatleft{
float:left;
}
</style>
<body>
<div class="padding50 floatleft"></div>
<span class="padding50 floatleft">类选择器</span>
</body>

浏览器显示结果:

后迭代选择器

特点:向后面迭代选择(向子标签)

<style type="text/css">
.outdiv span{
color:red;
}
</style>
<body>
<div class="outdiv">
<div>
<span>子标签(孙子)</span>
</div>
</div>
</body>

交集选择器

交集选择器一般是以标签选择开头,类选择器结尾

<style type="text/css">
div span.redspan{
color:red;
}
</style>
<body>
<div>
<span>span1</span>
<span class="redspan">sapn2</span>
<span>span3</span>
</div>
</body>

并集选择器

<style type="text/css">
li,span{
color:red;
}
</style>
<body>
<ul>
<li>item1</li>
<li>item2</li>
<li>item3</li>
</ul>
<span>span</span>
</body>

通配符选择器

通配符使用星号*表示,意思是“所有的”。

*{
padding:0;
margin:0;
}

这里是设置所有元素的外边距margin和内边距padding都为0。

不过,由于*会匹配所有的元素,这样会影响网页渲染的时间,因此很多人开始停止使用*通配符选择器,取而代之的是,把所有需要统一设置的元素,放在一起,一块设置。

blockquote,body,button,dd,dl,dt,fieldset,form,h1,h2,h3,h4,h5,h6,hr,input,legend,li,ol,p,pre,td,textarea,th,ul{ margin:0;padding:0}

CSS的继承性和层叠性

继承性

有一些属性,当给自己设置的时候,自己的后代都继承上了,这个就是继承性。

哪些属性能继承?

color、 text-开头的、line-开头的、font-开头的。

所以,如果我们的页面的文字,都是灰色,都是14px。那么就可以利用继承性:

body{
color:gray;
font-size:14px;
}

层叠性

CSS层叠性是指CSS样式在针对同一元素配置同一属性时,依据层叠规则(权重)来处理冲突,选择应用权重高的CSS选择器所指定的属性,一般也被描述为权重高的覆盖权重低的,因此也称作层叠。每个CSS选择器都会有一个权重,当两个选择器同时配置同一元素的同一属性时(比如一个设置color:red,另一个color:black),就会产生冲突,而解决冲突的方案就是CSS选择器的权重,权重高的来覆盖权重低的。

层叠权重规则:

先看标签有没有被选中,如果选中了以id数、类数、标签数来计算权重,如果权重一样大,style样式表后面的样式覆盖前面的。

如果都没有选中,权重都是0,样式就近原则。

为了说明这个权重规则我们下面以几个案例来解释一下:

案例1–看有没有选中

<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Document</title>
<style type="text/css">
/* 样式1 */
#div1 #div2{ /* 权重 2 0 0 */
color:red;
}
/* 样式2 */
.outdiv div span{ /* 权重 1 0 2 */
color:blue;
}
</style>
</head>
<body>
<div class="outdiv" id="div1">
<div class="innerdiv" id="div2">
<span>层叠规则<span>
</div>
</div>
</body>

本案例中样式1的权重明显比样式2大,但是样式2直接选中了标签。所以如果只有一个样式直接选中标签就不用比较了。

案例2–同时选中比权重

<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Document</title>
<style type="text/css">
/* 样式1 */
#div1 .innerdiv span{ /* 权重 1 1 1 */
color:red;
}
/* 样式2 */
.outdiv .innerdiv span{ /* 权重 0 2 1*/
color:blue;
}
</style>
</head>
<body>
<div class="outdiv" id="div1">
<div class="innerdiv" id="div2">
<span>层叠规则<span>
</div>
</div>
</body>

该例中样式1和样式2都直接选中了span标签,所以需要比较权重。

案例3–权重一样看谁在后面

<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Document</title>
<style type="text/css">
/* 样式1 */
#div1 .innerdiv span{ /* 权重 1 1 1 */
color:red;
}
/* 样式2 */
.outdiv #div2 span{ /* 权重 1 1 1 */
color:blue;
}
</style>
</head>
<body>
<div class="outdiv" id="div1">
<div class="innerdiv" id="div2">
<span>层叠规则<span>
</div>
</div>
</body>

上面样式1和样式2的权重一样大,样式2在后面所以显示蓝色。

案例4—都没选中看谁近

<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Document</title>
<style type="text/css">
/* 样式1 */
#div1 #div2 { /* 权重 2 0 0 */
color:red;
}
/* 样式2 */
.innerdiv{ /* 权重 0 1 0 */
color:blue;
}
</style>
</head>
<body>
<div class="outdiv" id="div1">
<div class="centerdiv" id="div2">
<div class="innerdiv">
<span>层叠规则<span>
<div>
</div>
</div>
</body>

上面样式1和样式2都没有选中span标签,虽然样式1的权重大,但是此时不比较权重,看谁离span标签近,如果一样近才比较权重。

盒模型

一个盒子中主要的属性就5个:width、height、padding、border、margin。

margin控制的是盒子与盒子之间的距离,padding存在于盒子的内部它不涉及与其他盒子之间的关系和相互影响问题。



这个盒子width:200px; height:200px; 但是真实占有的宽高是302*302。 这是因为还要加上padding、border。

宽度和真实占有宽度,不是一个概念!!

真实占有宽度= 左border + 左padding + width + 右padding + 右border

div{
padding:30px 20px 40px 100px; /*(上、右、下、左)*/
}

小属性可以叠掉大属性

padding: 20px;
padding-left: 30px; /* 将上面左边padding覆盖 */

边框的大属性写法

border-width:10px;    /* 边框宽度 */
border-style:solid; /* 线型 */
border-color:red; /* 颜色。*/ border:10px solid red; /* 合在一起的写法 */

标准文档流

标准流指的是在不使用其他的与排列和定位相关的特殊CSS规则时,各种元素的排列规则。

几个标准流现象

空白折叠现象

<body>
<img src="img1.jpg"/>
<img src="img2.jpg"/>
</body>



如果我们想让img标签之间没有空隙,必须紧密连接,否则会出现一定的空隙。

<img src="data:images/0.jpg" /><img src="data:images/1.jpg" /><img src="data:images/2.jpg" />

底边对齐现象

<body>
<span>底边对齐现象</span>
<img src="img3.jpg"/>
<img src="img2.jpg"/>
</body>

自动换行,一行写不满后就会换行

块级元素和行内元素

HTML文档中的元素可以分为两大类:行内元素和块级元素。

  1. 行内元素不占据单独的空间,依附于块级元素,行内元素没有自己的区域。它同样是DOM树中的一个节点,在这一点上行内元素和块级元素是没有区别的。

  2. 块级元素总是以块的形式表现出来,并且跟同级的兄弟块依次竖直排列,左右自动伸展,直到包含它的元素的边界,在水平方向不能并排。

常见的块级标签 : <div> 、h系列、<li>、<dt>、<dd>、<p>

常见的行内元素:<span>、<a>、<b>、<i>、<u>、<em>

块级元素和行内元素可以相互转换

display:inline; 和 display:block;

标准流里面有很多限制,往往满足不了我们对前端开发的需求,所以我们实际开发中经常需要脱离标准流限制,下一篇将介绍如何脱离标准流。

前端开发笔记(2)css基础(上)的更多相关文章

  1. 〖前端开发〗HTML/CSS基础知识学习笔记

    经过一天的学习,把慕课网的HTML/CSS基础知识学完了,笔记整理: 1. 文件结构: HTML文件的固定结构: <html> <head>...</head> & ...

  2. day44前端开发2之css基础

    web前端开发1一.前端三剑客之css 1.选择器:由标签/类/id单独或组合出现 2.作用域:{}内部区域 3.样式块:满足css链接语法的各种样式 eg:引入的基本样式 <head>  ...

  3. 从零开始学习前端开发 — 2、CSS基础

    一.CSS简介  1.CSS是什么 CSS是Cascading Style Sheets的简称,中文称为层叠样式表.特点:实现了表现与结构相分离 2.css基础语法 css是由选择符和声明两大部分组成 ...

  4. 前端开发笔记(1)html基础

    HTML介绍 HTML是HyperTextMarkupLanguage超文本标记语言的缩写 HTML是标记语意的语言 编辑器 任何纯文本编辑器都能够编辑html,比如记事本,editplus,note ...

  5. web前端开发笔记(1)

     一.HTML标签书写有哪些规范? 页面编码. 文档声明. 关键字与描述. 行内元素不能包含块级元素. a标签不能嵌套a标签. 标签名和属性必须用小写字母书写,属性必须加引号,标签必须闭合,单标签页必 ...

  6. Linux及Arm-Linux程序开发笔记(零基础入门篇)

    Linux及Arm-Linux程序开发笔记(零基础入门篇)  作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/bee ...

  7. web前端开发笔记(2)

    一.什么是作用域. 所有变量都存在于一个执行环境中(也称作用域),这个执行环境决定了变量的生命周期,以及哪一部分代码可以访问其中的变量.总结: 执行环境有全局执行环境和函数执行环境. 每次进入一个新执 ...

  8. 【Linux开发】Linux及Arm-Linux程序开发笔记(零基础入门篇)

    Linux及Arm-Linux程序开发笔记(零基础入门篇) 作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/beer ...

  9. Web前端开发如何利用css样式来控制Html中的h1/h2/h3标签不换行

      H1/H2/H3/H4标题标签常常使用在一个网页中唯一标题.重要栏目.重要标题等情形下. H1在一个网页中最好只使用一次,如对一个网页唯一标题使用.H2.H3.H4标签则可以在一个网页中多次出现, ...

  10. 好程序员web前端开发测验之css部分

    好程序员web前端开发测验之css部分Front End Web Development Quiz CSS 部分问题与解答 Q: CSS 属性是否区分大小写? <p><font si ...

随机推荐

  1. 08-03 java 继承

    继承格式,优缺点,概述: /* 继承概述: 把多个类中相同的内容给提取出来定义到一个类中. 如何实现继承呢? Java提供了关键字:extends 格式: class 子类名 extends 父类名 ...

  2. vtk文件编写

    在paraview中加载vtk文件,可以很好的显示三维空间图像,如下cpp代码: #include <iostream> #include <fstream> #include ...

  3. 通过修改CR0寄存器绕过SSDT驱动保护

    为了安全起见,Windows XP及其以后的系统将一些重要的内存页设置为只读属性,这样就算有权力访问该表也不能随意对其修改,例如SSDT.IDT等.但这种方法很容易被绕过,我们只要将这些部分修改为可写 ...

  4. todolist增加markdown模块

    markdown编辑器 利用`markdown_js`开源库实现todolist小项目的markdown日记本功能 todolist小项目地址 之前的介绍随笔todoList markdown-js仓 ...

  5. j2ee高级开发技术课程第五周

    pplet 是一种 Java 程序.它一般运行在支持 Java 的 Web 浏览器内.因为它有完整的 Java API支持,所以Applet 是一个全功能的 Java 应用程序. 如下所示是独立的 J ...

  6. spring boot 与 自定义interceptor

    前面学习过过滤器, 但是过滤器是针对servlet的, 用在springmvc和spring boot里面, 功能上, 感觉并不是很好用. 那这里来学习一下拦截器. 一. 拦截器的执行顺序 1. 目录 ...

  7. 利用nginx解决跨域问题

    访问我的博客 前言 最近遇到了跨域问题,结合之前[微信支付开发本地接收异步通知回调]的经验,利用 Nginx 实现了跨域. 公司之前为了解决跨域问题,用的是 iFrame,反正对于只做后端的我而言,觉 ...

  8. PTA (Advanced Level) 1006 Sign In and Sign Out

    Sign In and Sign Out At the beginning of every day, the first person who signs in the computer room ...

  9. 技术笔记2 jetty jboss

    jetty热部署: jetty启动加载文件webdefault.xml .文件里: <init-param> <param-name>useFileMappedBuffer&l ...

  10. 公众号开发之wx-tools+springboot应用实战-音乐爬虫推送[JAVA]

    springboot+wx-tools实践!音乐爬虫推送公众号DEMOGitHub地址:wx-tools 最终DEMO源码地址: music_collector 先理一下大概的开发步骤: 1. 创建一 ...