zoukankan      html  css  js  c++  java
  • 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教程

     

  • 相关阅读:
    GitHub与Markdown(学习笔记)
    “Another git process seems to be running in this repository...”Git此问题解决
    Git学习笔记--实践(三)
    Git学习笔记--配置(二)
    Java 锁(学习笔记)
    Git学习笔记--历史与安装(一)
    Java 8中Stream API(学习笔记)
    Qt Creator的下载和安装
    获取 wx.getUserInfo 接口后续将不再出现授权弹窗,请注意升级(微信小程序开发)
    大型网站架构技术一览
  • 原文地址:https://www.cnblogs.com/csnd/p/11807808.html
Copyright © 2011-2022 走看看