CSS基础

目录

CSS

CSS选择器

CSS应用方式 

外部样式表

内部样式表一:

内部样式表二:

盒模型

块级元素

内联元素

内联块元素

定位

static

fixed

relative

absolute

sticky


CSS

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

CSS选择器

CSS对元素的定位有很多种方法:

  •    主要的有三种:id选择器,类选择器,标签选择器
  •    关系选择器:后台选择器,选择子元素,选择直接子元素,选择兄弟元素
  •    组合选择器:分组定义样式(并列选择器)
  •    属性选择器:按属性过滤选择器,主要用于表单元素和a标签的选择

id选择器

    <style>
        #one{
            color:red
        }
    </style>
    <p id="one">hello,word!</p>

class类选择器

    <style>
        .one{
            color:red
        }
    </style>
    <p class="one">hello,word!</p>

标签选择器

    <style>
        p{
            color:red
        }
    </style>
    <p>hello,word!</p>

后代选择器

后代选择器用于选取某元素的后代元素,也就是某元素在另一个元素里面就可以选择

<style>
 div p{                //选取所有div内的p元素
        color:green;
     }
</style>
<div>
       <p id="one">hello,word!</p>
</div>

子元素选择器

与后代选择器相比,子元素选择器(Child selectors)只能选择作为某元素子元素的元素

<style>
 div>p{                //选取所有div的子元素p
        color:green;
     }
</style>
<div>
       <p id="one">hello,word!</p>
</div>

相邻兄弟选择器

相邻兄弟选择器(Adjacent sibling selector)可选择紧接在另一元素后的元素,且二者有相同父元素。

<style>
  div+p{               //将选择China所在的p元素
        color:green;  
       }
</style>

<div>
    <p id="one">hello,word!</p>
</div>
<p>China</p>

后续兄弟选择器

后续兄弟选择器选取指定元素之后的所有相邻兄弟元素

<style>
  div~p{               //将选择China、happy、html所在的p元素
        color:green;  
       }
</style>

<div>
    <p id="one">hello,word!</p>
</div>
<p>China</p>
<p>happy</p>
<p>html</p>

并列选择器

table,tr,th,td{
     border: 1px solid grey;
     border-collapse: collapse;
     border-left: 3px dotted red;
   }
tr{
     height: 35px;
     text-align: center;
   }
th{
     background-color: bisque;
   }
th,td{
    100px;
    padding: 10px;
  }
<table>
    <tr>
        <th>cell</th>
        <th>cell</th>
        <th>cell</th>
    </tr>
    <tr>
        <td>cell</td>
        <td>cell</td>
        <td>cell</td>
    </tr>
    <tr>
        <td>cell</td>
        <td>cell</td>
        <td>cell</td>
    </tr>
</table>

属性选择器

选择具有特定属性的元素

<style>
        [title]{         //选择有title属性的元素
            color:red
        }
</style>
<h title="hello">Hello,word!</h>
<p title="p">文本</p>

属性和值选择器

选择具有特定属性的且值相等的元素

<style>
        [title=p]{         //选择有title=p属性的元素
            color:red
        }
</style>
<h title="hello">Hello,word!</h>
<p title="p">文本</p>

属性和值的选择器 - 多值

选择具有特定属性且值中含有指定字符的元素

<style>
        [title~=p]{         //选择title属性的值中含有hello的元素
            color:red
        }
</style>
 <h1 title="hello world">Hello world</h1>
 <p title="student hello">Hello CSS students!</p>
 <p title="student">Hi CSS students!</p>

 元素属性和值选择器

选择某个元素属性等于某个值

<style>
        p[title=one]{
            color:red
        }
</style>
<p title="one">Hello CSS students!</p>
<p title="two">Hi CSS students!</p>

CSS应用方式 

外部样式表

<link rel="stylesheet" type="text/css" href="mystyle.css">

内部样式表一:

<html>
<head lang="en">
    <style type="text/css">
        .title{
            color: red;
        }
        #p{
            color:blue;
        }
    </style>
</head>
<body>
    <h3 class="title">这是标题</h>
    <p id="p">这是文本</p>
</body>
</html>

内部样式表二:

<html>
<head lang="en">
</head>
<body>
    <h3 style="color: red;">这是标题</h>
    <p style="color: blue">这是文本</p>
</body>
</html>

盒模型

所有 HTML 元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容。盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。

  • Margin(外边距) - 清除边框外的区域,外边距是透明的。
  • Border(边框) - 围绕在内边距和内容外的边框。
  • Padding(内边距) - 清除内容周围的区域,内边距是透明的。
  • Content(内容) - 盒子的内容,显示文本和图像。

当我们设置一个元素的宽度或者高度时,只是设置的其 content 的宽高度,他真正占用的地方还有padding、border、margin。

上下相邻的普通元素,之间的边距并非简单的相加,而是取其中的最大值,这种现象叫做margin重叠。(float元素不会有这种现象)

块级元素

Block element 块级元素

顾名思义就是以块显示的元素,高度宽度都是可以设置的。比如我们常用 的<div>、<p>、<ul>默认状态下都是属于块级元素。块级元素比较霸道,默认状态下每次都占据一整个行,后面的内容必须再新起一行显示。当然非块级元素也可以通过css的  display:block;  将其更改成块级元素。

块级元素特点:

  • 每个块级元素都从新的一行开始,并且其后的元素也另起一行。(霸道,一个块级元素独占一行)
  • 元素的宽度(width)、高度(height)、行高(line-height)以及上下外边距(margin-top/margin-bottom)都可设置。当
  • 元素宽度在不设置的情况下,是它本身父容器的100%(和父元素的宽度一致),当设置了宽度以后,左右边距(margin-left/margin-right)也可设置
  • p标签元素默认和其他元素有上下外边距(margin-top/margin-bottom)

块级元素左右居中(比如div在div中,p在div中):margin:  0   auto

块级元素之间垂直居中(比如div在div中,p在div中时,有特殊情况,后面会有讲解):设置相对定位方式

块级元素里面的文字左右居中: text-align: center

块级元素里面的字体上下居中:line-height:  100px; (文字相对于此块级元素上下垂直居中)

div元素中的文字水平和垂直居中

<style>
       div{
           background: red;
            100px;
           height:100px;
           text-align: center;   /*div里面的文字左右居中*/
           line-height: 100px;   /*div里面的文字垂直对齐*/
           margin:0 auto;        /*div左右居中*/
       }
</style>
<div>
        hello,word!
</div>

div中的div水平和垂直居中

<style>
      #one{
            background: red;
            500px;
            height:500px;
      }
      #two{
            background: green;
            100px;
            height:100px;

            text-align: center;   /*div中的文字水平对齐*/
            line-height: 100px;   /*div中的文字垂直对齐*/
 
            position: absolute;   /*设置子div相对于父div相对定位*/
            top:200px;            /*子div相对于父div垂直对齐*/
            left:200px;           /*子div相对于父div垂直对齐*/
      }
</style>

注意:假如 p 在 div 中时,有特殊情况。当设置line-height时 (这里p在div中时,当父div设置ling-height是父div的高度时,此时p占满了整个父div,所以设置line-height可以让p里面的文字看起来是垂直对齐的。但是当p也设置了宽度和高度时,这时,文字不是垂直对齐的)

如下,此时的p不设置宽度和高度,这样p中的文字看起来是水平和垂直对齐的

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>css学习</title>
    <style>
        #one{
            background: red;
            500px;
            height:500px;
            line-height: 500px;    /*p元素垂直居中*/
        }
        #two{
            background: green;
            text-align: center;    /*p元素里面的文字水平居中*/ 
        }
    </style>
</head>
<body>
<div id="one">
    <p id="two">hello,word!</p>
</div>
</body>
</html>

但是当p也设置了宽度和高度时,此时,如下

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>css学习</title>
    <style>
        #one{
            background: red;
            500px;
            height:500px;
            line-height: 500px;    /*文字垂直居中,相对于div*/
        }
        #two{
            background: green;
            100px;
            height:100px;
            text-align: center;    /*p元素里面的文字水平居中,相对于p元素*/
        }
    </style>
</head>
<body>
<div id="one">
    <p id="two">hello,word!</p>
</div>
</body>
</html>

常见的块级元素:

* address - 地址
* blockquote - 块引用
* center - 居中对齐块
* dir - 目录列表
* div - 常用块级容易,也是css layout的主要标签
* dl - 定义列表
* fieldset - form控制组
* form - 交互表单
* h1 - 大标题
* h2 - 副标题
* h3 - 3级标题
* h4 - 4级标题
* h5 - 5级标题
* h6 - 6级标题
* hr - 水平分隔线
* isindex - input prompt
* menu - 菜单列表
* noframes - frames可选内容,(对于不支持frame的浏览器显示此区块内容
* noscript - )可选脚本内容(对于不支持script的浏览器显示此内容)
* ol - 排序表单
* p - 段落
* pre - 格式化文本
* table - 表格
* ul - 非排序列表

内联元素

inline element 内联元素

通俗点来说就是文本的显示方式,与块级元素相反,内联元素的高度宽度都是不可以设置的,其宽度就是自身文字或者图片的宽 度。我们常用到的<a>、<span>、<em>都属于内联元素。内联元素的显示特点就是像文本一样的显示,不会独自占据一个行。当然块级元素也能变成内联元素,那就是通过css的  display:inline;   或者 float 来实现 。

竖直方向无法设置margin属性,水平方向可以设置margin属性 ,行内元素之间本身没有边距

水平居中:先将其改为块级元素:  display:block;   然后:text-align:center         

<style>
        a{
            500px;
            color:red;
            background: yellowgreen;
            display: block;        /*设置为块级元素*/
            text-align: center;    /*文字水平居中*/
            margin: 0 50px;        /*整个a标签水平居中,当设置了宽度时*/
        }
</style>
<a href="http://www.baidu.com">百度一下,你就知道</a>

 

内联元素特点:
1、和其他元素都在一行上;
2、元素的高度、宽度及上下边距不可设置;
3、元素的宽度就是它包含的文字或图片的宽度,不可改变

常见内联元素

* a - 锚点
* abbr - 缩写
* acronym - 首字
* b - 粗体(不推荐)
* bdo - bidi override
* big - 大字体
* br - 换行
* cite - 引用
* code - 计算机代码(在引用源码的时候需要)
* dfn - 定义字段
* em - 强调
* font - 字体设定(不推荐)
* i - 斜体
* kbd - 定义键盘文本
* label - 表格标签
* q - 短引用
* s - 中划线(不推荐)
* samp - 定义范例计算机代码
* select - 项目选择
* small - 小字体文本
* span - 常用内联容器,定义文本内区块
* strike - 中划线
* strong - 粗体强调
* sub - 下标
* sup - 上标
* textarea - 多行文本输入框
* tt - 电传文本
* u - 下划线
* var - 定义变量

内联块元素

inline-block内联块元素

可以共享一行,有宽高属性,可以设置上下左右外边距,行内块元素自带会有边距。设置为行内块元素:display: inline-block

常见行内块元素:

* input
* img

内联块元素的水平和垂直居中:

<style>
       #one{
           background: red;
           500px;
           height:500px;
       }
       img{
           100px;
           height:100px;
           margin:200px 200px;   /*水平和垂直居中*/
       }
</style>
<div id="one">
        <img src="images/b_0.gif" alt=""/>
</div>

定位

元素可以使用的顶部,底部,左侧和右侧属性定位。然而,这些属性无法工作,除非是先设定position属性。他们也有不同的工作方式,这取决于定位方法 position

static

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

fixed

元素的位置相对于浏览器窗口是固定位置。
即使窗口是滚动的它也不会移动
比如我们有些网站旁边的广告,他是不随着窗口滚动而滑下去的。

relative

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

absolute

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

sticky

sticky 英文字面意思是粘,粘贴,所以可以把它称之为粘性定位。

position: sticky; 基于用户的滚动位置来定位。

粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换。

它的行为就像 position:relative; 而当页面滚动超出目标区域时,它的表现就像 position:fixed;,它会固定在目标位置。

元素定位表现为在跨越特定阈值前为相对定位,之后为固定定位。

这个特定阈值指的是 top, right, bottom 或 left 之一,换言之,指定 top, right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同。

比如很多网站的顶部的导航栏就是粘性定位。

相关文章:CSS教程

 

原文地址:https://www.cnblogs.com/csnd/p/11807809.html