《CSS菜鸟教程》学习

编程知识 更新时间:2023-04-04 16:35:01

学习资料:《CSS菜鸟教程》

学习目标:熟悉CSS语法即可


CSS简介

  • 什么是CSS?
    • CSS(Cascading Style Sheets)层叠样式表
    • CSS定义了如何显示HTML元素
    • 样式通常存储在样式表
    • 多样式定义可层叠为一个

CSS语法

<!DOCTYPE html>
<html>
    <head>
        <title> HTML教程 Fighting!!! </title>

        <style>
            p{
                color: red;
                text-align: center;
            }
            /* css注释 */
        </style>

    </head>

    <body>
        <p>heihei</p>
    </body>
</html>
  • CSS语法由 选择器和多条声明 构成
  • CSS声明总是以;结尾,用{}括起来
  • 注释和C++一样

CSS ID和选择器

<style>
    #testparam
    {
        text-align: center;
        color: red;
    }

    .classtest
    {
        text-align: center;
        color: yellow;
    }
</style>
  • id 和 class功能上差不多,但id是唯一的
  • 知乎查了具体的不同,比较多的说法是 :id给js用,class给css用

CSS创建

样式表创建的三种方法(上面提到过)

  • 外部样式表
    <!DOCTYPE html>
    <html>
        <head>
            <title> HTML教程 Fighting!!! </title>
            <link href="mycss.css" rel="stylesheet" type="text/css">
            
    
        </head>
    
        <body>
            <testcss> oo  </testcss>
    
        </body>
    </html>
  • 内部样式表:把mycss.css的内容全部拷贝到<head>里来
  • 内联样式:通过style指定属性

多重样式

  • 同名的选择器定义,内联样式 > 内部样式表 > 外部样式表 > 浏览器默认样式

CSS 背景

<!DOCTYPE html>
<html>
    <head>
        <title> HTML教程 Fighting!!! </title>
        
        <style>

            h1{
                background-color: yellow;
                background-image: url('testimage.png');
                background-position: left top;
                background-repeat: no-repeat;
            }

        </style>
    </head>

    <body>
        <h1> haha </h1>
    </body>
</html>
  • 通过在head定义style标签,通过css对h1进行渲染

css文本格式

<!DOCTYPE html>
<html>
    <head>
        <title> HTML教程 Fighting!!! </title>
        
        <style>

            h1{
                text-align: center;
            }

            p.data{
                text-align: right;
            }
            p.main{
                text-align: justify; /*左右对齐*/
            }

            a{
                text-decoration:none; /*去除下划线,也可以加下划线,文本居中下划线*/
            }

            p.upperletter{
                text-transform: uppercase;
            }

            p.lowerletter{
                text-transform: lowercase;
            }

            p.cap{
                text-transform: capitalize;
            }
            p{
                text-indent: 50px;
            }
        </style>
    </head>

    <body>
        <h1> 标题居中 </h1>
        <p class="upperletter">small small </p>
        <p class="lowerletter">SMALL </p>
        <p class="cap">small small </p>
    </body>
</html>
  • p.classname,专属标签p,在p的class里引用
    • 对于p.classname这种形式的style,是选择性的,可以在body内做选择,需要的时候通过class属性指定
    • 对于在head内直接改p的属性,是覆盖了标签<p>的默认属性值
  • p{}直接修改标签p

CSS 字体

<!DOCTYPE html>
<html>
    <head>
        <title> HTML教程 Fighting!!! </title>
        
        <style>

            p.normal{
                font-family: serif;
                font-style: normal;
                font-size: 32px;
            }
            
            p.italic{
                font-style: italic;
                font-size: 2.0em;
            }

        </style>
    </head>

    <body>
        <h1> 标题居中 </h1>
        <p class="normal">small small </p>
        <p class="italic">SMALL </p>
    </body>
</html>
  • font-size:16px = 1.0em,em在浏览器上的兼容性更好
  • 字体有斜体和normal

CSS链接

<!DOCTYPE html>
<html>
    <head>
        <title> HTML教程 Fighting!!! </title>
        
        <style>

            a:link{
                color: black;
                text-decoration: underline;
                background-color: black;
            }
            a:visited{
                color: brown;
            }
            a:hover{
                color: coral;
                text-decoration: underline;
                background-color: yellow;
            }
            a:active{
                color:cornflowerblue;
            }

        </style>
    </head>

    <body>
        
        <a href = "http:www.baidu" > 百度 </a>


    </body>
</html>
  • 链接样式定义,顺序要固定:link visited hover active

CSS列表

  • ul是无序
  • ol是有序
  • 通过ul.classname或者ol.classname,可以给HTML元素的class属性赋值做到表现差异化

CSS表格

<!DOCTYPE html>
<html>
    <head>
        <title> HTML教程 Fighting!!! </title>
        
        <style>

        table,th,td
        {
            border: 1px solid;
            /* border-collapse: collapse; 折叠边框 */
            width: 200px;
            height: 100px;
            text-align: right;
            vertical-align: top;
            padding: 20px;
            color:yellow
        }

        </style>
    </head>

    <body>
        
        
        <table>
            <th > 表头1 </th>
            <th> 表头2 </th>
            <tr>
                <td>(1,1)</td>
                <td>(1,2)</td>
            </tr>
            <tr>
                <td>(2,1)</td>
                <td>(2,2)</td>
            </tr>
        </table>

    </body>
</html>
  • border属性定义,简写的写法; border width,border-style,border-color

CSS盒子模型


CSS边框

<!DOCTYPE html>
<html>
    <head>
        <title> HTML教程 Fighting!!! </title>
        
        <style>

            p.one
            {
                border-style: solid;
                border-width: 10px;
                border-color: black;
                border-left-style: dotted;
                border-left-color: yellow;
            }

        </style>
    </head>

    <body>
        
       <p class = "one"> one </p>

    </body>
</html>

CSS轮廓

/* CSS轮廓 */
outline-color: green;
outline-style: dotted; 
outline-width: 30px;

嵌套选择器

  • p{ }: 为所有 p 元素指定一个样式
  • .marked{ }: 为所有 class="marked" 的元素指定一个样式
  • .marked p{ }: 为所有 class="marked" 元素内的 p 元素指定一个样式
  • p.marked{ }: 为所有 class="marked" 的 p 元素指定一个样式

块和内联

块重新起一行,内联元素不重起一行


CSS Position

<!DOCTYPE html>
<html>
    <head>
        <title> HTML教程 Fighting!!! </title>
        
        <style>

            p.fixed
            {
                position: fixed; /* 相对于浏览器位置固定 */
            }

            p.posleft
            {
                position: relative;
                left: -20px; /* 相对原位置往左偏移20px */
            }

            p.sitcky
            {
                position: sticky;/* 粘性定位 */
                top: 50px;
                color: white;/* 覆盖,类似z-buffer */
                z-index: 1;
            }

        </style>
    </head>

    <body>
        
       <p class = "sitcky"> fixed </p>


       <p>滚动我</p>
       <p>来回滚动我</p>
       <p>滚动我</p>
       <p>来回滚动我</p>
       <p>滚动我</p>
       <p>来回滚动我</p>

    </body>
</html>

CSS 布局OverFlow

<!DOCTYPE html>
<html>
    <head>
        <title> HTML教程 Fighting!!! </title>
        
        <style>
        div.overflowtest
        {
            overflow: scroll;
            height : 100px;
            background-color: green;
        }
        </style>
    </head>


    <body>
        
       <div class = "overflowtest">
            <p>滚动我</p>
            <p>来回滚动我</p>
            <p>滚动我</p>
            <p>来回滚动我</p>
            <p>滚动我</p>
            <p>来回滚动我</p>
       </div>
    </body>
</html>

CSS组合选择器

组合选择器描述了两个选择器的关系

  • 后代选择器(以空格分隔)
    • h1 h2,所有在h1的h2,都执行对应的CSS样式
  • 子元素选择器(以大于 > 号分隔)
    • h1>h2 ,h2在h1的内部第一层,则被选中
  • 相邻兄弟选择器(以加号 + 分隔)
    • h1+h2  h2后一个兄弟h1,则被选中
  • 普通兄弟选择器(以波浪号 ~ 分隔)
    • h1 ~ h2,h1之后的所有h2兄弟,则被选中

CSS伪类

伪类用于添加选择器的特殊效果

selector:pseudo-class {property:value;}

selector.class:pseudo-class {property:value;}

<!DOCTYPE html>
<html>
    <head>
        <title> HTML教程 Fighting!!! </title>
        
        <style>
        
         /* p:first-child 匹配第一个 <p> 元素 */
         /* { */
            /* color: yellow; */
        /* }  */

        /* p>i:first-child  /* 匹配所有<p> 元素中的第一个 <i> 元素 */
        /* {
            color: blue;
        } */ */

        p:first-child i{
            color: green;
        }
        </style>
    </head>


    <body>
        
       <div>
           
            <p>滚<i>动</i><i>动</i>            </p>
            <p>来回滚动<i>我</i></p>
            <p>滚动我</p>
            <p>来<i>回</i><i>滚</i>动我</p>
            <p>滚动我</p>
            <p>来回滚动我</p>
       </div>
       
    </body>
</html>

CSS 伪元素

添加一些选择器的特殊效果

<!DOCTYPE html>
<html>
    <head>
        <title> HTML教程 Fighting!!! </title>
        
        <style>
        
        /* p:first-line
        {
            color: green;
        }

        p:first-letter
        {
            color: yellow;
        } */

        p:before
        {
            content: url(66.png);
        }

        
        p:after
        {
            content: url(66.png);
        }

        </style>
    </head>


    <body>
        
       <p> hahah </p>
       
    </body>
</html>

伪类和伪元素的异同

  • 都是fake
  • 伪元素是元素,类是类。前者和元素是平级关系,类是包含在元素中

CSS 导航栏

<!DOCTYPE html>
<html>
    <head>
        <title> HTML教程 Fighting!!! </title>
        
        <style>
        
            ul
            {
                list-style-type: none; /*列表标记*/
                margin: 0;
                padding: 0;
                width: 25%;
                height: 100%;
                position: fixed;
            }    
            a
            {
                display: block; /*可点击区域*/
                background-color: yellow;
                width: 40px;
            }

            a:hover
            {
                background-color: black;
            }

            li{
                border: 1px solid;
            }
        </style>
    </head>


    <body>
        
        <ul>
            <li><a href="hah">test1</a></li>
            <li><a href="hah">test2</a></li>
            <li><a href="hah">test3</a></li>
            <li><a href="hah">test4</a></li>
        </ul>
       
        <div style="margin-left:25%;padding:1px 16px;height:100%;">
            <h2>Fixed Full-height Side Nav</h2>
            <h3>Try to scroll this area, and see how the sidenav sticks to the page</h3>
            <p>Notice that this div element has a left margin of 25%. This is because the side navigation is set to 25% width. If you remove the margin, the sidenav will overlay/sit on top of this div.</p>
            <p>Also notice that we have set overflow:auto to sidenav. This will add a scrollbar when the sidenav is too long (for example if it has over 50 links inside of it).</p>
            <p>Some text..</p>
            <p>Some text..</p>
            <p>Some text..</p>
            <p>Some text..</p>
            <p>Some text..</p>
            <p>Some text..</p>
            <p>Some text..</p>
          </div>
    </body>
</html>
  • 左侧是全屏高度,右侧是可滚动的
  • 通过fix固定,通过margin-left通过比例做隔离

CSS 下拉菜单

当鼠标移动到指定元素上时,显示下拉菜单

<!DOCTYPE html>
<html>
    <head>
        <title> HTML教程 Fighting!!! </title>
        
        <style>
        
        .dropdown
        {
            display: inline-block;
            position: relative;
        }

        .dropdown-content 
        {
            display: none;
            background-color:white;
            max-width: 160px;
        }
        .dropdown:hover .dropdown-content
        {
            display: block;
        }
        </style>
    </head>


    <body>
        
        <div class="dropdown">
            <span>鼠标移动到我这!</span>
            <div class="dropdown-content">
              <p>菜鸟教程</p>
              <p>www.runoob</p>
            </div>
        </div>

    </body>
</html>
  • .dropdown 没被隐藏,被作为父标签的class,当鼠标放在父标签的内容上时,.dropdown:hover就被触发了,然后.dropdown-content的display: block;

CSS图像拼接

客户端发送多个请求到服务器,比较浪费性能,耗时久。不如直接一次性把所有图片发下来,客户端做切割显示

img.home {
    width: 46px;
    height: 44px;
    background: url(/images/img_navsprites.gif) 0 0;
}

CSS媒体类型

<!DOCTYPE html>
<html>
    <head>
        <title> HTML教程 Fighting!!! </title>
        
        <style>
        
            @media screen
            {
                p.test {font-family:verdana,sans-serif;font-size:1px;}
            }
            @media print
            {
                p.test {font-family:times,serif;font-size:100px;}  /* 打印模式 */
            }
        </style>
    </head>


    <body>
        
        <p class="test">菜鸟教程 -- 学的不仅是技术,更是梦想!!!</p>

    </body>
</html>

CSS计数器

<!DOCTYPE html>
<html>
    <head>
        <title> HTML教程 Fighting!!! </title>
        
        <style>
        
            body
            {
                counter-reset: section;
            }

            p::before
            {
                counter-increment: section;
                content: "Section " counter(section) ":";   
            }

        </style>
    </head>


    <body>
        
        <p> test1 </p>
        <p> test2 </p>
        <p> test3 </p>

    </body>
</html>

CSS网页布局

<!DOCTYPE html>
<html>
    <head>
        <title> HTML教程 Fighting!!! </title>
        
        <style>
        
            .header
            {
                text-align: center;
                font-size: 50px;
                color: green;
                background-color: black;
                margin:  50px;
            }


            .topnav
            {
                background-color: #333;
            }

            .topnav a
            {
                background-color: ;
                text-align: center;
                padding: 20px;
                color: green;
            }

        </style>
    </head>


    <body>
        
        <div class = "header">
            头部区域
        </div>


        <div class = "topnav">

            <a href = "http::www.baidu"> test1 </a>
            <a href = "http::www.baidu"> test2 </a>

        </div>

    </body>
</html>
  • 通过样式,在body内指定类,指定类里的某个标签,通过父级应该子级

总结:通过在<style></style>中,添加类声明,对HTML的元素进行自定义渲染

 

更多推荐

《CSS菜鸟教程》学习

本文发布于:2023-04-04 16:35:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/fcd08b740a6925c983977e42a29462cb.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:菜鸟   教程   CSS

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 42986文章数
  • 14阅读数
  • 0评论数