css 基础介绍

上一篇博客web 前端入门介绍了基本的 html 内容,但是网页如果只有内容的堆积,是没有人愿意去看的。这篇博客将介绍 css 的基本知识,让你的网页更加好看。

CSS - 层叠样式表 (Cascading Style Sheets)

CSS 是用来控制网页的布局和外观,比如 间距,颜色,行高,字体,边框,圆角,甚至动画。。。

语法:

selector {
    property1: value1;
    property2: value2;
}

举例:

div {
    font-size: 14px;
    color: #ccc;
    padding: 10px;
}

如何使用

如何使用样式对文档进行格式化,通常有以下几种方法:
嵌入式

<div style="font-size:14px;color:#ccc;padding:10px;">Just do it</div>

内联式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style type="text/css">
        div {
            font-size: 14px;
            color: #ccc;
            padding: 10px;
        }
    </style>
</head>
<body>
    <div> Just do it </div>
</body>
</html>

外联式

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <link rel="stylesheet" href="./style.css" type="text/css" />
</head>
<body>
    <div> Just do it </div>
</body>
</html>

style.css

div {
    font-size: 14px;
    color: #ccc;
    padding: 10px;
    text-align: center;
}

层叠次序

  1. 浏览器缺省设置
  2. 外联式 (推荐使用
  3. 内联式(位于 <head> 标签内部)
  4. 嵌入式(在 HTML 元素内部) (优先级最高

继承

如下代码:

<body>
    hello 
    <p> world </p>
</body>
body {
    color: red;
}

p 标签中的内容也会是红色,p 标签的 color 属性继承自 body

如果想要摆脱继承,可以写如下 css

p {
    color: yellow;
}

则 p 标签中的内容就会变为黄色,而不是红色。

选择器

先看这段 HTML

<body>
    <div class="section">
        <div class="nav content-header">
            <h1 class="nav-item title">This is a title</h1>
            <p> Hello </p>
        </div>
        <p id="text"> World </p>
    </div>
    <div class="section"> <p> Let it go </p> </div>
</body>

标签选择器 h1 选择标签名为 h1 的节点
ID 选择器 #text 选择 id 属性为 text 的节点
class 选择器 .section 选择 class 属性有 section 的节点

选择的组合:

div.section 是 div 标签,同时 class 属性有 section

div .section 是 div 标签的后代,且 class 属性有 section

div > .section 是 div 标签的子节点,且 class 属性有 section

盒模型

一切可见的 html 元素,在浏览器的布局里都可以理解为一个框。这个 html 元素会占用多大的视觉空间功,会通过盒模型来计算。如图:


盒模型

内边距总是跟元素的背景色一样。
外边距总是透明的。

如何用 css 控制:

div {
    margin: 10px;
    padding: 12px;
    border: 1px solid #ccc
}

内边距的设置

示例如下:

div {padding: 10px 0.25em 2px 20%;} 
div {padding: 10px 6px 8px;}
div {padding: 10px 8px;}
div {padding: 10px;}
div {
  padding-top: 10px;
  padding-right: 0.25em;
  padding-bottom: 2ex;
  padding-left: 20%;
}

单位不同,其中百分数值是相对于其父元素的 width 计算的。

设置边距顺序,是上、右、下、左的顺序(顺时针),如果某个方向的边距没有,会使用相对的方向的边距。如果只有一个值 div {padding: 10px;},自然是四个方向边距都为这个值。

可以通过 padding-top, padding-right, padding-bottom, padding-left 单独设置。

外边距的设置

示例如下:

div {margin: 10px 0.25em 2px 20%;} 
div {margin: 10px 6px 8px;}
div {margin: 10px 8px;}
div {margin: 10px;}
div {
  margin-top: 10px;
  margin-right: 0.25em;
  margin-bottom: 2ex;
  margin-left: 20%;
}

外边距的设置规则与内边距类似,此外,当两个垂直外边距相遇时,它们将形成一个外边距,发生外边距合并。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。但是注意只有普通文档流中块框的垂直外边距才会发生外边距叠加。行内框、 浮动框或绝对定位框之间的外边距不会叠加。

边框的设置

示例如下:

div {border: 1px solid #ccc;} 
div {border-top: 4px solid #7c7;}
div {border-style: solid dotted dashed double;}
div {border-top-width: 15px;}

border 设置的属性有宽度、样式,以及颜色

可通过 border-width, border-style, border-color 单独设置某一种属性

也有四个方向(上,右,下,左)border-witdh: 1px 2px; 规则类似外边距和内边距,或者单独指定方向,如 border-top: 1px solid #abc; 或者既指定方向又指定属性, 如 border-top-witdh: 1px

css3 新属性: border-radius。可以使边框变为圆角形状,甚至是一个圆形,椭圆形,如 border-radius: 20px;border-radius: 50%; 使用百分数定义圆形半径或椭圆的半长轴,半短轴。水平半轴相对于盒模型的宽度;垂直半轴相对于盒模型的高度。效果如下:

圆角效果图

定位和布局

display 属性

div、h1 或 p 元素的 display 属性默认为 block, 常常被称为“块级元素”, span 和 strong 等元素的 display 属性默认为 inline,称为“行内元素”。

常见的 display 属性值有如下几种:

block: 宽高可以自行设置,默认宽度由父容器决定,默认高度由内容决定。自己独占一行。
inline:宽度和高度都有内容决定,与其他元素共占一行。
inline-block: 宽高可以自行设置,类似block,但是与其他元素共占一行,类似inline。
none: 常用于隐藏 DOM 节点

position 属性

元素在页面中的布局遵守一套文档流的方式,默认的定位属性值为static。它其实是未被设置定位的。

元素如果被定位了,那么它的top left bottom right 等属性就会生效,能设置定位的属性是 relative, absolutefixed

需要注意的另一点是被定位的元素层次( z-index)会得到提高。

relative(相对定位)

设置方法: position: relative
然后通过设置 top left bottom right 中任意一个属性,元素就会在自身文档流所在位置上被移动,移动的距离是相对于该元素开始的起点(未使用相对定位之前)。

看下 w3school 上的例子,代码:

#box_relative {
  position: relative;
  left: 30px;
  top: 20px;
}

效果如下:


相对定位示意图

可以看到,其他元素不会调整位置来弥补它偏离后剩下的空隙。

absolute(绝对定位)

设置方法: position: absolute
设置了绝对定位之后,元素会脱离文档流,其他的元素会调整位置来弥补它偏离后剩下的空隙。

偏移距离也是通过设置 top left bottom right 中的属性,不同的是偏移的参考位置和之前元素的位置没有关系,而是它最近的设置了定位属性(position值不为static)的祖先元素。

如果元素为块级元素(display 属性值为 block),那么它的宽度也会由内容撑开。(在默认文档流中块级元素如果没有设置宽度属性,会自动填满整行)

看下 w3school 上的例子,代码:

#box_relative {
  position: absolute;
  left: 30px;
  top: 20px;
}

效果如下:


绝对定位示意图
fixed (固定定位)

设置方法: position: fixed
固定定位有些类似绝对定位,设置后也会脱离文档流。不同的地方在于固定定位的参考点是可视窗口,
即使页面滚动,元素仍然会在固定位置。

float 属性

设置 float 属性,可以使元素变为浮动定位,浮动的框可以向左或向右移动,直到它的外边缘碰到包含框或另一个浮动框的边框为止。
语法: float: leftfloat: right

看下 w3school 上的例子:


浮动
浮动

浮动

以上两个例子可以看出,浮动框会脱离文档流。第一个例子浮动框碰到容器的右边缘停止了移动,第二个例子浮动框碰到容器的左边缘或者另一个浮动框边缘停止了移动。

文字环绕

浮动的清除

第一个例子行框被缩短。第二个例子展示了浮动元素不占空间,可以通过创建一个空的 div,然后设置 clear 属性,如 clear: both,清除浮动。

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,774评论 1 92
  • 学习CSS的最佳网站没有之一 http://www.w3school.com.cn/tags/index.asp ...
    Amyyy_阅读 1,073评论 0 1
  • 1.行内元素和块级元素?img算什么?行内元素怎么转化为块级元素? 行内元素:和有他元素都在一行上,高度、行高及外...
    极乐君阅读 2,438评论 0 20
  • 1.CSS基本概念 1.1 CSS的定义 CSS(Cascading Style Sheets)层叠样式表,主要用...
    寥寥十一阅读 1,857评论 0 6
  • 其实每日分享写到这儿,最大的痛点就是每天都要写,哪有这么多灵感和闪光点可以写得出来,说来讽刺,自觉除了每天带...
    熙熙Breathe阅读 414评论 2 2