前端学习之路之CSS ,四

Infi-chu:

http://www.cnblogs.com/Infi-chu/

CSS盒子模型

概念:CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。

如下所示:

不同部分的说明:

Margin(外边距) - 清除边框外的区域,外边距是透明的。

Border(边框) - 围绕在内边距和内容外的边框。

Padding(内边距) - 清除内容周围的区域,内边距是透明的。

Content(内容) - 盒子的内容,显示文本和图像。

元素的宽度和高度:

例子:300px (宽)+ 50px (左 + 右填充)+ 50px (左 + 右边框)+ 50px (左 + 右边距)= 450px

总结:

最终元素的总宽度计算公式是这样的:总元素的宽度=宽度+左填充+右填充+左边框+右边框+左边距+右边距

元素的总高度最终计算公式是这样的:总元素的高度=高度+顶部填充+底部填充+上边框+下边框+上边距+下边距

CSS边框:

边框样式:

border-style属性用来定义边框的样式。

常用的值:

none: 默认无边框

dotted: 定义一个点线边框

dashed: 定义一个虚线边框

solid: 定义实线边框

double: 定义两个边框。 两个边框的宽度和 border-width 的值相同

groove: 定义3D沟槽边框。效果取决于边框的颜色值

ridge: 定义3D脊边框。效果取决于边框的颜色值

inset:定义一个3D的嵌入边框。效果取决于边框的颜色值

outset: 定义一个3D突出边框。 效果取决于边框的颜色值

边框宽度:

通过 border-width 属性为边框指定宽度。

为边框指定宽度有两种方法:

可以指定长度值,比如 2px 或 0.1em(单位为 px, pt, cm, em 等);

或者使用 3 个关键字之一,它们分别是 thick 、medium(默认值) 和 thin。

注:CSS 没有定义 3 个关键字的具体宽度,所以一个用户可能把 thick 、medium 和 thin 分别设置为等于 5px、3px 和 2px,而另一个用户则分别设置为 3px、2px 和 1px。

        p.one
        {
            border-style:solid;
            border-width:5px;
        }
        p.two
        {
            border-style:solid;
            border-width:medium;
        }

边框颜色:

border-color属性用于设置边框的颜色。可以设置的颜色:

name - 指定颜色的名称,如 "red"

RGB - 指定 RGB 值, 如 "rgb(255,0,0)"

Hex - 指定16进制值, 如 "#ff0000"

注: border-color单独使用是不起作用的,必须得先使用border-style来设置边框样式。

        p.one
        {
            border-style:solid;
            border-color:red;
        }
        p.two
        {
            border-style:solid;
            border-color:#98bf21;
        }

单独设置各个边:

border-style属性可以有1-4个值:

border-style:dotted solid double dashed;

上边框是 dotted

右边框是 solid

底边框是 double

左边框是 dashed

border-style:dotted solid double;

上边框是 dotted

左、右边框是 solid

底边框是 double

border-style:dotted solid;

上、底边框是 dotted

右、左边框是 solid

border-style:dotted;

四面边框是 dotted

常用边框属性:

border 简写属性,用于把针对四个边的属性设置在一个声明。

border-style 用于设置元素所有边框的样式,或者单独地为各边设置边框样式。

border-width 简写属性,用于为元素的所有边框设置宽度,或者单独地为各边边框设置宽度。

border-color 简写属性,设置元素的所有边框中可见部分的颜色,或为 4 个边分别设置颜色。

border-bottom 简写属性,用于把下边框的所有属性设置到一个声明中。

border-bottom-color 设置元素的下边框的颜色。

border-bottom-style 设置元素的下边框的样式。

border-bottom-width 设置元素的下边框的宽度。

border-left 简写属性,用于把左边框的所有属性设置到一个声明中。

border-left-color 设置元素的左边框的颜色。

border-left-style 设置元素的左边框的样式。

border-left-width 设置元素的左边框的宽度。

border-right 简写属性,用于把右边框的所有属性设置到一个声明中。

border-right-color 设置元素的右边框的颜色。

border-right-style 设置元素的右边框的样式。

border-right-width 设置元素的右边框的宽度。

border-top 简写属性,用于把上边框的所有属性设置到一个声明中。

border-top-color 设置元素的上边框的颜色。

border-top-style 设置元素的上边框的样式。

border-top-width 设置元素的上边框的宽度。

CSS轮廓:

CSS轮廓:

轮廓(outline)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用;CSS outline 属性规定元素轮廓的样式、颜色和宽度。

如图所示:

所有属性:

属性 说明 值 CSS

outline 在一个声明中设置所有的轮廓属性 outline-color、outline-style、outline-width、inherit 2

outline-color 设置轮廓的颜色 color-name、hex-number、rgb-number、invert、inherit 2

outline-style 设置轮廓的样式 none、dotted、dashed、solid、double、groove、ridge、inset、outset、inherit 2

outline-width 设置轮廓的宽度 thin、medium、thick、length、inherit 2

CSS外边距:

margin:

margin 清除周围的(外边框)元素区域。margin 没有背景颜色,是完全透明的;margin 可以单独改变元素的上,下,左,右边距,也可以一次改变所有的属性。

如图所示:

可以输入的值:

值 说明

auto 设置浏览器边距,这样做的结果会依赖于浏览器

length 定义一个固定的margin(使用像素,pt,em等)

% 定义一个使用百分比的边距

单边 外边距属性:

margin-top:100px;

margin-bottom:100px;

margin-right:50px;

margin-left:50px;

简写:

margin:25px 50px 75px 100px;

上边距为25px

右边距为50px

下边距为75px

左边距为100px

margin:25px 50px 75px;

上边距为25px

左右边距为50px

下边距为75px

margin:25px 50px;

上下边距为25px

左右边距为50px

margin:25px;

所有的4个边距都是25px

CSS填充:

Padding:

当元素的 padding(填充)内边距被清除时,所释放的区域将会受到元素背景颜色的填充;单独使用 padding 属性可以改变上下左右的填充。

如图所示:

可以输入的值:

值 说明

length 定义一个固定的填充(像素, pt, em,等)

% 使用百分比值定义一个填充

填充 单边内边距:

padding-top:25px;

padding-bottom:25px;

padding-right:50px;

padding-left:50px;

简写:

padding:25px 50px 75px 100px;

上填充为25px

右填充为50px

下填充为75px

左填充为100px

padding:25px 50px 75px;

上填充为25px

左右填充为50px

下填充为75px

padding:25px 50px;

上下填充为25px

左右填充为50px

padding:25px;

所有的填充都是25px

CSS分组和嵌套:

分组选择器:

在样式表中有很多具有相同样式的元素;为了尽量减少代码,你可以使用分组选择器;每个选择器用逗号分隔。

        h1,h2,p
        {
            color:green;
        }

嵌套选择器:

它可能适用于选择器内部的选择器的样式。

        /*
        p{ }: 为所有 p 元素指定一个样式。
        .marked{ }: 为所有 class="marked" 的元素指定一个样式。
        .marked p{ }: 为所有 class="marked" 元素内的 p 元素指定一个样式。
        p.marked{ }: 为所有 class="marked" 的 p 元素指定一个样式。
        */
        p
        {
            color:blue;
            text-align:center;
        }
        .marked
        {
            background-color:red;
        }
        .marked p
        {
            color:white;
        }
        p.marked{
            text-decoration:underline;
        }

CSS尺寸:

常用属性:

属性 描述

height 设置元素的高度。

line-height 设置行高。

max-height 设置元素的最大高度。

max-width 设置元素的最大宽度。

min-height 设置元素的最小高度。

min-width 设置元素的最小宽度。

width 设置元素的宽度。

CSS Display(显示) 与 Visibility(可见性):

隐藏元素 - display:none或visibility:hidden:

隐藏一个元素可以通过把display属性设置为"none",或把visibility属性设置为"hidden"。但是请注意,这两种方法会产生不同的结果;visibility:hidden可以隐藏某个元素,但隐藏的元素仍需占用与未隐藏之前一样的空间。也就是说,该元素虽然被隐藏了,但仍然会影响布局。

display:none可以隐藏某个元素,且隐藏的元素不会占用任何空间。也就是说,该元素不但被隐藏了,而且该元素原本占用的空间也会从页面布局中消失。

h1.hidden {visibility:hidden;}

h1.hidden {display:none;}

CSS Display - 块和内联元素:

块元素是一个元素,占用了全部宽度,在前后都是换行符。

块元素的例子:

<h1>

<p>

<div>

内联元素只需要必要的宽度,不强制换行。

内联元素的例子:

<span>

<a>

如何改变一个元素显示:

可以更改内联元素和块元素:

把列表项显示为内联元素:

li {display:inline;}

把span元素作为块元素:

span {display:block;}

CSS定位:

五大属性:static、relative、fixed、absolute、sticky

static定位:

HTML元素的默认值,即没有定位,元素出现在正常的流中;静态定位的元素不会受到 top, bottom, left, right影响。

        div.static {
            position: static;
            border: 3px solid #73AD21;
        }

fixed定位:

元素的位置相对于浏览器窗口是固定位置;即使窗口是滚动的它也不会移动

 p.pos_fixed
        {
            position:fixed;
            top:30px;
            right:5px;
        }

注:Fixed 定位在 IE7 和 IE8 下需要描述 !DOCTYPE 才能支持;Fixed定位使元素的位置与文档流无关,因此不占据空间;Fixed定位的元素和其他元素重叠。

relative 定位:

相对定位元素的定位是相对其正常位置。

        h2.pos_left
        {
            position:relative;
            left:-20px;
        }
        h2.pos_right
        {
            position:relative;
            left:20px;
        }

absolute 定位:

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

h2{
            position:absolute;
            left:100px;
            top:150px;
        }

注:absolute 定位使元素的位置与文档流无关,因此不占据空间;absolute 定位的元素和其他元素重叠。

sticky 定位

position: sticky; 基于用户的滚动位置来定位;粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换;它的行为就像 position:relative; 而当页面滚动超出目标区域时,它的表现就像 position:fixed;它会固定在目标位置;元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位;这个特定阈值指的是 top, right, bottom 或 left 之一,换言之,指定 top, right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。

div.sticky {
            position: -webkit-sticky; /* Safari */
            position: sticky;
            top: 0;
            background-color: green;
            border: 2px solid #4CAF50;
        }

重叠的元素:

元素的定位与文档流无关,所以它们可以覆盖页面上的其它元素;z-index属性指定了一个元素的堆叠顺序(哪个元素应该放在前面,或后面);一个元素可以有正数或负数的堆叠顺序

CSS Overflow:

CSS overflow 属性可以控制内容溢出元素框时在对应的元素区间内添加滚动条。

属性:

值 描述

visible 默认值。内容不会被修剪,会呈现在元素框之外。

hidden 内容会被修剪,并且其余内容是不可见的。

scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。

auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。

inherit 规定应该从父元素继承 overflow 属性的值。

CSS浮动:

什么是浮动:

CSS 的 Float(浮动),会使元素向左或向右移动,其周围的元素也会重新排列。Float(浮动),往往是用于图像,但它在布局时一样非常有用。

    .eg
    {
        float:left;
        width:110px;
        height:90px;
        margin:5px;
    }