(19)C#传智:CSS,选择器,样式(第19天)

vs2022保存html项目时,偶尔会有死机,只得强行关闭重新打开。

一、CSS简介


    CSS(Cascading Style Sheet)层叠样式表。能让网页制作者有效的定制,改善网页的效果。
    CSS是对Html的补充,它很好地控制了网页的显示效果。并实现网页内容与效果彻底分离。
    
    学习前准备。开始准备用 vs2022进行asp.net。
    1)安装环境:如果没有在vs2022中安装asp.net,那么打开vs2022,上在面菜单 工具->获取工具
        和功能 ,弹出Visual Studio Install,经过程序检查后。在左侧选中ASP.NET和Web开发(
        复选框),对应的,右侧会出现复选,直接傻瓜式全选。然后安装。约30分钟安装后重启电脑.
    2)打开vs2022,选择创建新项目后,新窗体的右侧上面选择C#,windows,web对项目进行过滤。
        在最上面搜索框中,填入空网站。就会搜索出结果,第一个:"ASP.NET空网站",选择它,
        下一步,项目名称随便,这里不更改,直接创建。
    3)进入WebSite1项目后,对解决方案中的项目WebSite1右击->添加->HTML页。或者右击->
        添加->新建项->HTML页。双击HtmL项进行我们要用的网页设计。
    
    此时,可以按住Ctrl+鼠标滚轮,对编程界面文字进行放大可缩小显示。


二、CSS的几种设置方式


    即通过怎样的方式向Html页面中写入CSS的代码。
    
    三种方式:
    1、内联样式表
        (在标签内设置元素的样式)

    <p style="background:teal;font-size:xx-large">朝参暮礼常如此,在处皆通极乐城。</p>


    优点:灵活,随意。
    缺点:如果很多标签要添加,每个都得设置style,麻烦!
    
    2、嵌入样式表
        (需要在Head标签内写)

    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            p {
                background-color: teal;
                font-size: xx-small;
            }
        </style>
    </head>  

 
    
    注意:上面是对p标签的全部设置,body内如果另有style的则遵其设置。
        说明内联样式表的优先级高于嵌入样式表。
    
    3、外部样式表 link
        利用一个设置好的样式表文件直接使用。
        
        样式表的创建:
        在解决方案中,右击项目,添加->样式表;或者右击后,添加->新项目,弹出的窗体中
        去找:样式表(C#)  这里取名为Test.css
    
        1)打开上面的样式表Test.css,删除所有,创建下面代码:

            tt{
                background-color:lightskyblue;
                font-size:xx-large;
            }   

     
    
        2)上面是描述tt标签的,在HTML页的body创建tt标签,并写上内容:

            <tt>
                一读二读尘念消,三读四读染情薄。<br/>
                读至十百千万遍,此身已向莲华托。<br/>
                亦愿后来读诵者,同予毕竟生极乐。<br/>
            </tt>


    
        3)上面两步,还没有关联,无法生效。代码切换到Html页,把项目中的Test.css用鼠标
            拖动到html中(不限位置),推荐用在head标签内.自动生成下面代码:    

            <link href="Test.css" rel="stylesheet" />


    
        或者在head内手动添加也可:

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


    
        如果在Test.css中再对p标签设置

            tt{
                background-color:lightskyblue;
                font-size:xx-large;
            }
            p{
                background-color:gray;
            }


        运行时会发现,对P标签不生效了。
        因为它的优先级低于嵌入与和内联。
        
        优先级高低:内联样式表>嵌入样式表>外部样式表


三、选择器

 一般不使用内联式,而使用嵌入表或外部样式表。但嵌入式又难以确定某个标签,这时就可
    以使用选择器。
    
    样式规则的选择器:通过怎样的途径来获得页面上要设置样式的元素)
        1)HTML select
        2)Class Selector(需要给要设置样式的元素的class属性赋值)
        3)ID Selector(需要给设置样式的元素的ID属性赋值)
        4)关联选择器   P EM{background-Color:Yellow}
        5)组合选择器   <table></table>
        6)伪元素选择器  
        
    伪元素选择器
        是指对同一个HTML元素的各种状态和其所包括的部分内容的一种定义方式。例如,对于
    超链接标签(<a></a>)的正常状态(没有任何动作前)、访问过的状态、选择状态、光标移
    到超链接文本上的状态,对于段落的首字母和首行,都可以使用伪元素选择器来定义。
    
    伪元素的几种情况:
    A:active  选中超链接时的状态;
    A:hover   光标移动到超链接上的状态
    A:link   超链接的正常状态
    A:visited 访问过程超链接状态
    P:first-line 段落中的第一行文本
    P:first-letter  段落中的第一个字母
    
    
    
    1)前面就是通过HTML select来指定元素p,tt等。
    2)下面类选择器,是通过人为规定某些标题里的class来确定指明的标签。

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            p.p1 {
                background-color: yellow;
            }

            p.p2 {
                background-color: teal;
                font-size:xx-large;
            }
        </style>
    </head>
    <body>
        <p class="p1">怒发冲冠,凭栏处、潇潇雨歇。</p>
        <p class="p2">抬望眼、仰天长啸,壮怀激烈。</p>
        <p class="p1">三十功名尘与土,八千里路云和月。</p>
        <p class="p2"> 莫等闲、白了少年头,空悲切。</p>
    </body>
    </html>

    
    3)同时,通过设置标签的ID,来确定哪些标签的样式更改。
    注意:class是“某些”标签,来表示是同一类别。多个。
          id是“某个”标签,表示某个标签。具有唯一性。单个。
 

    
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            #p1 {
                background-color: gray;
            }

            #p2 {
                background-color: aqua;
                font-size: xx-large;
            }
        </style>
    </head>
    <body>
        <p id="p1">怒发冲冠,凭栏处、潇潇雨歇。</p>
        <p id="p1">抬望眼、仰天长啸,壮怀激烈。</p>
        <p id="p2">三十功名尘与土,八千里路云和月。</p>
        <p id="p2"> 莫等闲、白了少年头,空悲切。</p>
    </body>

    
    4)关联选择器,不是某个标签,是多个标签一起时才进行确定该位置样式。下面对p或em不会
    生效。但是,在p与em同时存在时就会生效。

    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            p em {
                background-color: gold;
            }
        </style>
    </head>
    <body>
        <p><em>怒发冲冠,凭栏处、潇潇雨歇。</em></p>
        <em>抬望眼、仰天长啸,壮怀激烈。</em>
        <em>三十功名尘与土,八千里路云和月。</em>
        <p> 莫等闲、白了少年头,空悲切。</p>
    </body>    

    
    5)组合选择器,把多个有相同设置的标签,用逗号组合在一起设置,简单明了。

    
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            h1, h2, h3, h4, h5, h6, td {
                background-color: hotpink;
            }
        </style>
    </head>
    <body>
        <h1>万里长城永不倒</h1>
        <h2>万里长城永不倒</h2>
        <h3>万里长城永不倒</h3>
        <h4>万里长城永不倒</h4>
        <h5>万里长城永不倒</h5>
        <h6>万里长城永不倒</h6>
        <table border="1" cellpadding="4">
            <tr>
                <td>万里</td>
                <td>万里</td>
                <td>万里</td>
                <td>万里</td>
            </tr>
            <tr>
                <td>长城</td>
                <td>长城</td>
                <td>长城</td>
                <td>长城</td>
            </tr>
        </table>
    </body>

    
    6)伪元素
 

    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            a:active {
                text-decoration: none;
            }

            a:hover {
                font-size: xx-large;
            }

            P::first-letter {
                font-size: xx-large;
            }

            P::first-line {
                font-size: xx-small;
            }
        </style>
    </head>
    <body>
        <p>
            床前明月光<br />
            疑是地上霜<br />
            举头望明月<br />
        </p>

        <a href="#">超链接</a> <br />
        <a href="#">超链接</a> <br />
        <a href="#">超链接</a> <br />
        <a href="#">超链接</a> <br />
    </body>


    
四、CSS当中的样式属性详解


    Css 当中的属性非常多,大体上可以分为以下几类: 字体、背景、文本、位置、布局、边缘、列表。
    
    1、字体
    字体的属性主要包括文字的字体、大小、颜色、显示效果等基本样式,下面是各种字体属性的详细
    介绍。
    
    Font-family:该属性用于设置字体系列。如宋体,仿宋,黑体等
    Font-size:该属性定义文字的大小,可以使用度量单位来设置字体的大小,也可以使用一个相对
                的字体大小。还可以使用绝对的大小标记符。
            绝对大小的设置:xx-small,x-small,small,medium,large,x-large,xx-large(小到大)
    font-style 该属性用于定义字体样式,有:Normal、Italic 或者 Oblique(斜体)。
    text-decoration 该属性用于在文本中条件下划线、上划线、中划线。
    font-weight 该属性用于设置粗体字的磅值该属性的值有: 
                normal、bold、bolder、lighter、100~900
    练习:

    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            #p1 {
                font-family: '田英章楷书 英章楷书';
            }

            #p2 {
                font-size: xx-large;
            }

            p.p3 {
                font-style: italic;
                border-top: dashed;
                border-left: dotted;
                border-bottom: double;
            }

            p.p4 {
                font-weight: 800
            }
        </style>
    </head>
    <body>
        <p id="p1">几回梦到法王家,来去分明路不差。</p>
        <p id="p2">出水珠幢如日月,排空宝盖似云霞。</p>
        <p class="p3">鸳鸯对浴金池水,鹦鹉双衔玉树花。</p>
        <p class="p4">睡美不知谁唤醒,一垆香散夕阳斜。</p>
    </body>   

 
    
    2、背景
    
    背景包括背景颜色,背景图像,以及背景图像的控制。
    Background-color:设置背景色.  transparent表示透明的背景色。
    Background-image:设置元素的背景图像。
    Background-repeat:确定背景图像是否以及如何重复。
            这个属性的取值no-repeat:表示背景图像只在元素的显示区域中出现一遍。
    Repeat: 在水平和垂直方向上垂直。Repeat-x和Repeat-y分别在水平或垂直方向上的重复。
    Background-attachment:确定背景图像是否跟随内容滚动。
            设置为fixed时,表示固定背景图像;为Scroll时,表示图像跟随内容移动而移动。
    Background-position:指定背景图像的水平位置和垂直位置。
            水平位置的取值可以是left,center,right,也可以是数值。
            垂直的取值可以是top,center,bottom。也可以是数值。
    
    文档流:文档在排列元素时会按照从上到下,从左到右,依次时行排列,不会有重复。
            一个层只有一个元素。
    例如:下面红绿蓝只能从上到下排列:

    

    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            div {
                height: 90px;
                width: 90px;
            }

                div.div1 {
                    background-color: red;
                }

                div.div2 {
                    background-color: green;
                }

                div.div3 {
                    background-color: blue;
                }
        </style>
    </head>
    <body>
        <div class="div1"></div>
        <div class="div2"></div>
        <div class="div3"></div>
    </body>   

 
            
    但有时,设计多个元素在同一位置层叠显示,就必须脱离文档流的控制。
    试图指明红绿蓝三个位置,修改style如下:

    <style type="text/css">
        div {
            height: 90px;
            width: 90px;
        }

            div.div1 {
                background-color: red;
                top: 30px;
                left: 30px;
            }

            div.div2 {
                background-color: green;
                top: 50px;
                left: 50px;
            }

            div.div3 {
                background-color: blue;
                top: 70px;
                left: 70px;
            }
    </style>


    但是,并没有层叠效果,这里就需要脱离文档流的控制,用position进行控制:
 

    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            div {
                height: 90px;
                width: 90px;
            }

                div.div1 {
                    background-color: red;
                    top: 30px;
                    left: 30px;
                    position: absolute; /*绝对定位*/
                    z-index: 3; /*上下层*/
                }

                div.div2 {
                    background-color: green;
                    top: 50px;
                    left: 50px;
                    position: absolute;
                    z-index: 2;
                }

                div.div3 {
                    background-color: blue;
                    top: 70px;
                    left: 70px;
                    position: absolute;
                    z-index: 1;
                }
        </style>
    </head>
    <body>
        <div class="div1"></div>
        <div class="div2"></div>
        <div class="div3"></div>
    </body>

    
    例子,网页右下角弹出提示,可以用div及最上层显示出来。 

    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            div.div1 {
                height: 90px;
                width: 90px;
                right: 0px;
                bottom: 0px;
                background-color: teal;
                position: absolute;
            }
        </style>
    </head>
    <body>
        <div class="div1">右下角广告</div>

        <br /><br /><br /><br /><br /><br /><br /><br /><br />
        <br /><br /><br /><br /><br /><br /><br /><br /><br />
        <br /><br /><br /><br /><br /><br /><br /><br /><br />
        <br /><br /><br /><br /><br /><br /><br /><br /><br />
        <br /><br /><br /><br /><br /><br /><br /><br /><br />
    </body>


    
    上面还有一个小bug,拉动垂直滚动条向下,div会上跑。只需要把上面的绝对位置改成固定位置
    即修改为:position:fixed;
    
    3、文本
    
    文本的属性包括:文字间距,对齐方式,上下标,排列方式,首先缩进。
    
    Word-spacing:设置单词之间的间距。
    Letter-spacing:设置字符之间的间距
    Text-align:设置文本的水平对齐为方式,取值可以是let,right,center,justfy
    Text-index:设置第一行文本的缩进值。
    Line-height:设置文本所在行的高度。

        
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            .p1 {
                word-spacing: 20px; /*单词间距*/
                letter-spacing: 20px; /*各字符含汉字间距*/
            }

            .p2 {
                text-align: left;
                text-indent: 15px;
                line-height: 20px;
                background-color: green;
            }
        </style>
    </head>
    <body>
        <p class="p1">Css就是Cascading Style Sheet单词的缩写也即层叠样式表</p>
        <p class="p2">一念代万念,如如不动</p>
    </body>


    
    
    4、位置
    
    位置属性就是制定元素的位置。
    Position:设置对象的定位方式。
        有三种取值:absolute(绝对定位),relative(相对定位),static(无特殊定位)
        默认为static
    Left:设置元素左边的水平位置
    Top:设置元素顶部的垂直位置。
    Width:设置元素显示的宽度。
    Height:设置元素显示的高度。
    Z-index:使用定位后。 元素的上下层次。
    
    5、边缘
    
    Margin类用于设置元素的边界与其它元素的空隙大小。
    
    Margin-top:设置元素的上边界与其它元素之间的空隙大小。
    Margin-right:设置元素的右边界与其它元素之间的空隙大小。
    Margin-bottom:设置元素的下边界与其它元素之间的空隙大小。
    
    标准盒子模型:
   

    
一个盒子就一个Div

    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            * {
                margin-left: 0px;
            }
            /*所有网页元素*/

 

            div.div1 {
                height: 150px;
                width: 300px;
                background-color: red;
                padding: 10px;
            }

            p.p1 {
                height: 30px;
                background-color: teal;
                padding: 20px;
            }
        </style>
    </head>
    <body>
        <div class="div1"><p class="p1">黄河之水天上来,奔流到海不复返。</p></div>
    </body>


    
    常用盒子模型来布局网页。例如网页常居中显示,两侧空白。可用div居中。
    设置网页,先布局,再填内容。布局用div,为了区分每个div都用背景色,开发完后拆除背景色.
    下面设置一个整体div,首部挂个横着的div,第二排的div分成左右两部分。

    
    <head>
        <meta charset="utf-8" />
        <title></title>
        <link href="Test.css" rel="stylesheet" type="text/css" />
        <style type="text/css">
            div.divIndex {
                width: 800px;
                height: 900px;
                background-color: gray;
                margin: 0px auto;
            }

            div.divLogo {
                width: 800px;
                height: 60px;
                background-color: green;
            }

            div.divContent {
                width: 800px;
                height: 100px;
                background-color: yellow;
            }

            div.divPicture {
                width: 300px;
                height: 100px;
                top: 60px;
                background-color: aqua;
                float: left;
            }

            div.divArtical {
                width: 500px;
                height: 100px;
                top: 60px;
                left: 300px;
                background-color: navy;
                float: left;
            }
        </style>
    </head>
    <body>
        <div class="divIndex">
            <div class="divLogo">
                <img src="2.jpg" height="60" />
            </div>
            <div class="divContent">
                <div class="divPicture">
                    图片
                </div>
                <div class="divArtical">
                    文章
                </div>
            </div>
        </div>"
    </body>


    
    margin: 0px auto;是上下为0,左右自动,即居中。
    上面的第二排图片与文章,不能用position:absolute进行绝对定位,因为居中并不知道
    它的左边距是多少,所以用一float漂浮,两个float漂浮排列成一行
    
    综合例子:
    制作界面:

 
    分析:
    整体div分成上下两部分。上面一个div,下部分为一个table,为两列,主要有四类:班级类,
    开班类,    预约红色类,爆满蓝色类。
    测量一下高宽290*380。整个漂浮float,文本颜色设置color,对字体padding可以设置位置。
    字体加粗font-weight, 对单元格padding可以设置行高.
    虚线border-bottom:1px dashed #000000;字体对齐text-align,

    
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            * {
                margin: 0px;
                font-size: 12px;
            }

            div.divIndex {
                float: right;
                background-color: aliceblue
            }

            div.logo {
                width: 290px;
                height: 28px;
                background-color: steelblue;
                color: white;
            }

            #textLogo {
                font-size: 15px;
                padding: 2px;
                font-weight: bold;
            }

            #table {
                padding: 10px;
            }

            td.td1 {
                font-weight: bold;
            }

            td.td2 {
                color: dodgerblue;
                border-bottom: 1px dotted lightsteelblue;
            }

            td.td3 {
                color: red;
                font-weight: bold;
                text-align: right;
                border-bottom: 1px dotted lightsteelblue;
            }

            td.td4 {
                color: blue;
                font-weight: bold;
                text-align: right;
                border-bottom: 1px dotted lightsteelblue;
            }
        </style>
    </head>
    <body>

        <div class="divIndex">
            <div class="logo">
                <p id="textLogo">.Net培训开班信息</p>
            </div>

            <table width="290" height="340" id="table">
                <tr>
                    <td class="td1">.Net基础班</td>
                </tr>
                <tr>
                    <td class="td2">北京-2014年5月6号</td>
                    <td class="td3">预约报名中</td>
                </tr>
                <tr>
                    <td class="td2">北京-2014年5月6号</td>
                    <td class="td4">预约报名中</td>
                </tr>
                <tr ">
                    <td class="td2">北京-2014年5月6号</td>
                    <td class="td3">预约报名中</td>
                </tr>
                <tr ">
                    <td class="td2">北京-2014年5月6号</td>
                    <td class="td4">预约报名中</td>
                </tr>

                <tr>
                    <td class="td1">.Net就业班</td>
                </tr>
                <tr>
                    <td class="td2">北京-2014年5月6号</td>
                    <td class="td3">预约报名中</td>
                </tr>
                <tr>
                    <td class="td2">北京-2014年5月6号</td>
                    <td class="td4">预约报名中</td>
                </tr>
                <tr>
                    <td class="td2">北京-2014年5月6号</td>
                    <td class="td3">预约报名中</td>
                </tr>
                <tr>
                    <td class="td2">北京-2014年5月6号</td>
                    <td class="td4">预约报名中</td>
                </tr>

                <tr>
                    <td class="td1">.Net远程班</td>
                </tr>
                <tr>
                    <td class="td2">北京-2014年5月6号</td>
                    <td class="td3">预约报名中</td>
                </tr>
                <tr>
                    <td class="td2">北京-2014年5月6号</td>
                    <td class="td3">预约报名中</td>
                </tr>
            </table>
        </div>
    </body>    
    
    注意:这里面的css比较长,影响整个html,可以另建css,用外部样式表的方式进行操作。
    
    例子:用列表制作导航。
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            * {
                margin: 0px auto;
            }

            div.divIndex {
                height: 1200px;
                width: 800px;
                background-color: yellow;
            }

            div.divLogo {
                height: 110px;
                width: 800px;
                background-color: aqua;
            }

            div.divNav {
                height: 30px;
                width: 800px;
                background-color: lightpink;
            }

            ul li {
                float: left;
                width: 120px;
                list-style: none;
                font-size: 18px;
                line-height: 30px;
            }

            a:hover {
                font-size: 20px;
                background-color: cyan;
            }
        </style>
    </head>
    <body>
        <div class="divIndex">
            <div class="divLogo"></div>
            <div class="divNav">
                <ul>
                    <li><a href="#">企业简介</a></li>
                    <li><a href="#">企业文化</a></li>
                    <li><a href="#">荣誉奖章</a></li>
                    <li><a href="#">长远规划</a></li>
                    <li><a href="#">售后服务</a></li>
                </ul>
            </div>
        </div>
    </body>    


    

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值