14-前端开发之CSS

什么是 CSS ?

CSS 指层叠样式表 (Cascading Style Sheets),用于对页面进行美化。

存在的方式有3种:

  1. 元素内联:在标签中使用 style='xx:xxx;'
  2. 页面嵌入:在页面中嵌入< style type="text/css"> </style >
  3. 引入外部 CSS 文件

必要性:美工会对页面的色彩搭配和图片的美化负责,开发人员则必须知道是如何实现的。

基础语法

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

selector {declaration1; declaration2; ... declarationN }

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

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

属性(property)是您希望设置的样式属性(style attribute)。每个属性有一个值。属性和值被冒号分开。

selector {property: value}

下面这行代码的作用是将 h1 元素内的文字颜色定义为红色,同时将字体大小设置为 14 像素。

在这个例子中,h1 是选择器,color 和 font-size 是属性,red 和 14px 是值。

h1 {color:red; font-size:14px;}

下面的示意图为您展示了上面这段代码的结构:

image

提示:请使用花括号来包围声明。

编写注释

/*注释内容*/

元素内联

直接在标签上应用,代码如下:

<p style="background-color:yellow">
元素内联
</p>

效果如下:

image

页面嵌入

在Head里面写好css样式然后再style标签中应用。

主要的样式选择器有:id 选择器,class 选择器,标签选择器,层级选择器,组合选择器和属性选择器。

下面将逐一介绍样式选择器的使用。

样式应用优先级:直接在标签上写的 style 优先,然后按编写顺序,就近原则应用。

class 选择器

class 选择器应用的比较广泛一些,基本语法如下:

<head>
    <meta charset="UTF-8">
    <title>class选择器</title>
    <style>
        .s1{
            background-color: aqua;
        }
    </style>
</head>
<body>
    <!--使用class="s1"来应用head中.s1的样式-->
    <div class="s1">我是 class 选择器</div>
</body>

id 选择器

由于id不能重复,一般不推荐使用id选择器,知道即可,了解一下基本语法:

<head>
    <meta charset="UTF-8">
    <title>id选择器</title>
    <style>
        #s1{
            background-color: aqua;
        }
    </style>
</head>
<body>
    <!--使用id="s1"来应用head中#s1的样式-->
    <div id="s1">我是 id 选择器</div>
</body>

标签选择器

给所有同一类型的标签添加样式

<head>
    <meta charset="UTF-8">
    <title>标签选择器</title>
    <style>
        /*所有div都会应用此样式*/
        div{
            background-color: aqua;
        }
    </style>
</head>
<body>
    <div>我是标签选择器1</div>
    <div>我是标签选择器2</div>
</body>

关联选择器(层次选择器?)

<head>
    <meta charset="UTF-8">
    <title>关联选择器</title>
    <style>
        /*注意是中间空格*/
        .idselect p{
            background-color: aqua;
        }
    </style>
</head>
<body>
    <!--div标签里面只有p标签才能应用此样式-->
    <div class="idselect">
        我是DIV
        <p>我是P</p>
    </div>
</body>

效果如下:

image

组合选择器

以上选择器都可以组合起来用,代码如下:

<head>
    <meta charset="UTF-8">
    <title>组合选择器</title>
    <style>
        #i1,.c1,div p{
            background-color: aqua;
        }
    </style>
</head>
<body>
    <!--div标签里面只有p标签才能应用此样式-->
    <div>
        我是DIV
        <p>我是P</p>
    </div>
    <div id="i1">
        我是#i1
    </div>
    <div class="c1">
        我是.c1
    </div>
</body>

看效果吧:

image

属性选择器

对选择到的标签通过属性再进行一次筛选

<head>
    <meta charset="UTF-8">
    <title>属性选择器</title>
    <style>
        .c1[name="dave"]{
             50px;height: 50px;
            background-color: chartreuse;
        }
    </style>
</head>
<body>
    <!--只有符合属性规则的标签才会应用样式-->
    <div class="c1">我是DIV</div>
    <input class="c1" type="text" name="dave">
    <input class="c1" type="password">
</body>

看效果吧:

image

更多选择器请参考:CSS 选择器参考手册

外部引入

css 样式也可以写在单独文件中,在头部直接引入也可以用

<head>
    <meta charset="UTF-8">
    <title>外部引入</title>
    <link rel="stylesheet" href="css/commons.css" />
</head>

CSS 常用属性

基本

height           # 高度,百分比
width            # 宽度,像素,百分比
text-align:ceter # 水平方向居中
line-height      # 垂直方向根据标签高度
color            # 字体颜色
font-size        # 字体大小
font-weight      # 字体加粗

background(背景)

1. background-color 背景颜色,代码如下:

<div style="background-color: red">
    Hello World
</div>

更多颜色请参考这里:CSS颜色集

2. background-image 背景图片,代码如下:

<!--默认是平铺,加上 background-repeat: no-repeat可以取消重复,此外还有:repeat-x;repeat-y-->
<div style="background-image: url(image/favicon.ico);height: 80px;background-repeat: no-repeat" >
</div>

3. background-position

应用场景:所有的小图都放置在一张大图上,利用定位背景图像显示该大图的某个部分,达到显示不同小图的目的。

<head>
    <meta charset="UTF-8">
    <title>background-position</title>
    <style>
        .bg-icon{
            /*定义一个图片*/
            background-image: url(icon1.png);
            /*设置图片不平铺*/
            background-repeat: no-repeat;
            height: 18px;
             18px;
            /*设置一个边框用来演示这个例子的窗口*/
            border: 2px solid red;
            /*根据图片xy轴定位来调整窗口显示小图的位置*/
            background-position-x: 0;
            background-position-y: -80px;
        }
    </style>
</head>
<body>
    <div class="bg-icon"></div>
</body>

border 边框,代码如下:

<!--border:有3个参数:线的粗细、线的样式(实线、点、虚线等)、线的颜色-->
<!--第一种:线的粗细为1像素,实线、红色-->
<div style="border:1px solid red;height:10px" ></div>
<!--第二种:线的粗细为1像素,点、蓝色-->
<div style="border:1px dotted blue;height:10px" ></div>
<!--第三种:线的粗细为1像素、虚线、紫色-->
<div style="border:1px dashed purple;height:10px" ></div>

显示效果如下:

image

边框也可以单独设置上下左右任意一边,代码如下:

<!--在左边设置边框,3px、实线、蓝色-->
<div style="border-left: 3px solid red">Hello World</div>

显示效果如下:

image

display

<!--display 为none将隐藏标签-->
<div style="display: none;">Hello World</div>
<!--默认inline。此元素会被显示为内联元素,元素前后没有换行符。-->
<div style="display: inline;background-color: chartreuse ">Hello World</div>
<!--block:此元素将显示为块级元素,此元素前后会带有换行符。-->
<a style="display: block;background-color: chartreuse ">Hello World</a>
<!--行内块元素:既有设置行内标签属性,也有块级标签属性-->
<a style="display: inline-block;background-color: chartreuse ">Hello World</a>

更多属性可以参考:CSS display 属性

float

浮动,用途很广泛,让标签浪起来,块级标签也可以堆叠。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>luotianshuai_study</title>
    <style>
        .float-left{
            20%;
            background-color:red;
            height: 500px;
            float: left;
            /*这里长和宽,可以用百分比或者直接指定像素来指定*/
        }
        .float-right{
             80%;
            background-color:blue;
            height: 500px;
            float:left;
            /*这里长和宽,可以用百分比或者直接指定像素来指定*/
        }
    </style>
</head>
<body>
    <div class="float-left"></div>
    <div class="float-right"></div>
</body>
</html>

注:这里需要注意,有一种情况,如果不给父div设置高度,并且设置了float之后,子的float可能会覆盖父div的颜色怎么办?在父的div内加一条:

<div style="clear:both;"></div>

margin、padding

1.margin(外边距)

/*外边距从上往下移50px*/
margin-top: 50px;
/*外边距从左往右移50px*/
margin-left: 50px;

更多属性请点击这里

2.padding(内边距)

/*内边距从上往下移50px*/
padding-top: 50px;
/*内边距从左往右移50px*/
padding-left: 50px;

更多属性请点击这里

cursor

<div style="cursor:pointer">停放在这里显示小手(pointer)</div>
<div style="cursor:help">停放在这里显示问号(help)</div>
<div style="cursor:wait">停放在这里显示圆圈(wait)</div>
<div style="cursor:move">停放在这里显示移动(move)</div>
<div style="cursor:crosshair">停放在这里显示定位(crosshair)</div>

day15-CSS补充知识点

position(定位)

position 主要有4个属性值:

  1. static: 默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。
  2. fixed: 绝对定位,元素的位置相对于浏览器窗口是固定位置,即使窗口是滚动的它也不会移动。
  3. relative: 生成相对定位的元素,相对于其正常位置进行定位。因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。
  4. absolute:生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。
    元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。如果元素没有已定位的父元素,那么它的位置相对于.

fixed 应用例子

下面的例子主要是将“标题栏”固定的顶部,“返回顶部”按钮固定在右下角,无论你怎么滚动屏幕,它们相对浏览器窗口都是固定在同一位置。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>固定标题栏&&返回顶部</title>
    <style>
        .pg-header{
            background-color: crimson;
            height: 48px;
            color: #FFFFFF;
            position: fixed;
            top:0;
            left:0;
            right:0;
        }
        .pg-body{
            background-color: olivedrab;
            height: 500px;
            margin-top: 50px;
            color: #FFFFFF;
        }
        .gototop{
            background-color: aqua;
            position: fixed;
            right: 30px;
            bottom: 30px;
        }
    </style>
</head>
<body>
    <div class="pg-header">我是头部</div>
    <div class="pg-body">我是内容1</div>
    <div class="pg-body">我是内容2</div>
    <div class="gototop">返回顶部</div>
</body>
</html>

relative && absolute 应用例子

  • relative 相对于网页整体固定。
  • absolute 是相对于一个有着 position 属性的父级对象进行定位的,如果不存在,那么它就会以body为定位对象,按照你首次打开浏览器的整个窗口进行定位,当你向下滑动时它会随之移动。

看代码:

    <!--这里定义了一个reletive属性的position对象-->
    <div style="position:relative; 500px;height: 200px;border: 2px solid red;margin: 0 auto">
        <div style="position: absolute;right:0;bottom:0; 100px;height: 50px;border: 2px solid blue;"></div>
    </div>
<!--absolute属性的这个对象是相对于它父级的对象定位的-->

还有个输入框的例子看看:

<div style="height: 35px; 400px;position: relative;">
    <input type="text" style="height: 35px; 370px;padding-right: 30px">
    <span style="position: absolute;right: 6px;top: 10px;background-image: url(user_icon.jpg);height: 18px; 18px;display: inline-block;"></span>
</div>

opacity(透明度)

用于设置 div 元素的不透明级别,从 0.0 (完全透明)到 1.0(完全不透明)。

代码如下:

div
{
opacity:0.5;
}

注释:IE8 以及更早的版本支持替代的 filter 属性。例如:filter:Alpha(opacity=50)

z-index(页面层级展示顺序)

该属性设置一个定位元素沿 z 轴的位置,z 轴定义为垂直延伸到显示区的轴。如果为正数,则离用户更近,为负数则表示离用户更远。

Z-index 仅能在定位元素上奏效(例如 position:absolute;)

来看个三级页面的例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>z-index</title>
    <style>
        .page1{
            z-index: 10;
            background-color: aquamarine;
            height: 300px;
             500px;
            position: fixed;
            top: 50%;
            left: 50%;
            margin-top: -150px;
            margin-left: -250px;
        }
        .page2{
            z-index: 9;
            background-color: #AAAAAA;
            top:0;
            right:0;
            bottom: 0;
            left:0;
            position: fixed;
            opacity: 0.5;
        }
        .page3{
            background-color: blue;
            height: 500px;
            margin-top: 50px;
        }
    </style>
</head>
<body>
    <div class="page1">页面一</div>
    <div class="page2">页面二</div>
    <div class="page3">页面三</div>
</body>
</html>

overflow

这个属性定义溢出元素内容区的内容会如何处理。主要属性如下:

  • visible: 默认值。内容不会被修剪,会呈现在元素框之外。
  • auto: 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。
  • scroll: 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。
  • hidden: 内容会被修剪,并且其余内容是不可见的。
  • inherit: 规定应该从父元素继承 overflow 属性的值。
<body>
    <!--overflow:auto属性:如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。-->
    <div style="height: 50px;background-color: crimson;overflow: auto">
        Dave<br>
        Dave<br>
        Dave<br>
        Dave<br>
        Dave<br>
    </div>
</body>

hover

hover 选择器用于选择鼠标指针浮动在上面的元素。

标题栏鼠标滑过变色的实现例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>鼠标滑过变色</title>
    <style>
        .pg-header{
            position: fixed;
            height: 48px;
            background-color: crimson;
            line-height: 48px;
            top:0;
            left:0;
            right:0;
        }
        .pg-body{
            margin-top: 50px;
        }
        .w{
             980px;
            margin: 0 auto;
        }
        .pg-header .menu{
            display: inline-block;
            padding: 0 10px 0 10px;
            color: #FFFFFF;
        }
        /*鼠标滑过变色*/
        .pg-header .menu:hover{
            background-color: darkred;
        }
    </style>
</head>
<body>
    <div class="pg-header">
        <div class="w">
            <a class="logo">LOGO</a>
            <a class="menu">首页</a>
            <a class="menu">超市</a>
            <a class="menu">全球购</a>
        </div>
    </div>
    <div class="pg-body">
        <div class="w">内容</div>
    </div>
</body>
</html>
原文地址:https://www.cnblogs.com/huyuedong/p/6049157.html