WEB前端学习-CSS3-01

年初的时候工作不是很忙花了小10天的时间利用业余时间学习了一下web前端开发,前段时间整理电脑,偶然发现了这个文件夹,现在打算把这些东西整理一下,有些东西可能不是很正确也不是很具体,但还是鼓起勇气发出来,毕竟技术只有在分享的过程中才能不断进步。

CSS3中界面元素样式设置的方式

1.CSS行内样式

行内样式就是标签后面进行颜色设置、字体大小。。。。。。。

<h1 style = "color:red";> 这是语段行内样式的设置效果</h1>
<ul>
    <li><a href = "#"></a>
         <a href = "#"></a>
         <a href = "#"></a>
    </li>
</ul>

注意在这里可以用Emmate语法快速创建,在这里'>'表示的是父子关系

ul>li>a[href="#"] * 3

运行效果如下:


内嵌样式效果图

2.CSS3内嵌样式

内嵌样式是指将页面元素的样式设置代码写在HTML中head内部。
示例代码如下:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CSS3的内嵌样式</title>
    <style>
        /* ‘p {}’ 专门给body中的p段落中的内容进行样式设置 */
        p {
            color: green;/*设置前景色也就是字体颜色为绿色*/
            background-color: aqua;
        }

        ul {
            background-color: aqua;
        }
    </style>
</head>
<body>
    <p>这里是一个段落</p>
    <ul>
        <li><a href="#">iOS</a></li>
        <li><a href="#">Java</a></li>
        <li><a href="#">HTML</a></li>
    </ul>
</body>
</html>

效果如下:


内敛样式

3.CSS3中的外链样式

在HTML的head中使用link标签来调用外部CSS样式的文件可以实现对本页面样式进行设置,这种方式就是CSS的外联样式。
优点:CSS样式文件可以重复使用
外联CSS样式代码如下:

h1  {
  color: red;
}

引用方式代码如下:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>通过外联设置CSS样式</title>
    <link rel="stylesheet" href="../CSS/main.css">
</head>
<body>
    <h1>通过外联来设置这段文本的样式</h1>

</body>
</html>

效果图:


外联样式

4.外联样式的第二种引入方式:@import

@import也可以引入外联样式,具体区别看完代码再说:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>导入CSS3样式</title>
    <style>
        @import "../CSS/main.css";
    </style>
</head>
<body>
    <h1>通过导入CSS3样式完成这段文本的修改</h1>
</body>
</html>

导入的是同一个CSS样式文件,这里就不放效果图了,关于@import和link这两种方式的异同点,我没有做过深入的研究,不过我在网上发现了很多不错解释,在这里感谢博客园的web前端开发之路!

综合度娘的多篇文章和个人理解,两者的区别总结如下:
1:老祖宗的差别。link属于XHTML标签,而@import完全是CSS提供的一种方式。
link标签除了可以加载CSS外,还可以做很多其它的事情,比如定义RSS,定义rel连接属性,等,@import就只能加载CSS了。

2: 加载时间及顺序不同。使用link链接的css是客户端浏览你的网页时先将外部的CSS文件加载到网页当中,然后再进行编译显示,所以这种情况下显示出来 的网页跟我们预期的效果一样,即使一个页面link多个css文件,网速再慢也是一样的效果;而使用@import导入的CSS就不同了,客户端在浏览网 页时是先将html的结构呈现出来,再把外部的CSS文件加载到网页当中,当然最终的效果也是跟前者是一样的,只是当网速较慢时会出现先显示没有CSS统 一布局时的html网页,这样就会给阅读者很不好的感觉。这也是现在大部分网站的CSS都采用链接方式的最主要原因。

3:兼容性不同。由于@import是CSS2.1提出的所以老的浏览器不支持,@import只有在IE5以上的才能识别,而link标签无此问题。

4:使用dom控制样式时出现问题。当使用javascript控制dom去改变样式的时候,只能使用link标签,因为@import不是dom可以控制的。

5: 导入样式可以避免过多页面指向一个css文件。当网站中使用同一个CSS文件的页面不是非常多时,这两种方式在效果方面几乎是没有不同的,但网站的页面数 达到一定程度时(比如新浪等门户),如果采用链接的方式可能就会使得由于多个页面调用同一个CSS文件而造成速度下降,但是一般页面能达到这种程度的网站 也会有资本用最好的硬盘,所以这方面的因素也不用怎么担心。

综上所述,一般普通的站点在调用外部样式表的时候,还是尽量选择link链入外部样式表比较好。

CSS3中样式选择器汇总

在我们开发web界面的时候相当于构建一个完整的人体,HTML赋予了这个人的骨架和结构(头、手、脚......),CSS决定了这些部位的视觉感受(肤色、高低、胖瘦......),JavaScript又决定了这个人的行为(吃饭,喝水、跑步......)。前面我们已经讲过一种CSS的引用样式是行内样式,其实这一点上和iOS开发中设置控件样式是类似的,初始化完成一个控件之后就去对这个控件进行设置(按钮的颜色,按钮上文本字体的大小),但是网站的开发和APP的开发区别在于一个网页的页面元素通常情况下要比一个APP界面元素多得多,如果有20个相同的界面元素要设置相同的背景颜色,那么是不是要用行内样式设置20次?显然不可能。所以我们通常用内嵌样式设置元素样式。那么怎么获取这些元素呢?可以通过标签名称、自己给元素设置的tag(类似于iOS的tag)、这些选择器的作用就是获取元素的,获取元素的选择器大概有以下几种:

1.类选择器

运用条件:当界面中多个标签要设置相同的属性的时候需要给这些标签设置相同的类,然后用类选择器设置CSS样式。

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>类选择器</title>
    <style>
        .web {
            color: red;
        }
        .demo {
            background-color: green;
        }
    </style>
</head>
<body>
    <!--class这个属性可以有多个值,每个值之前用空格隔开-->
    <p class="web demo">这是第一个一个段落</p>
    <p>这是第二个段落</p>
    <ul>
        <li class="web">上海</li>
        <li>武汉</li>
        <li class="web">深圳</li>
        <li>广州</li>
    </ul>
    <!--标签中class属性和id属性的区别:-->
            <!--1.class值可以相同,id属性的值不能相同-->
            <!--2.class可以有多个值,但是id只能有一个值-->
            <!--尽量使用class属性-->


</body>
</html>

2.复合选择器

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>复合选择器</title>
    <style>
        h2.demo {
            color: red;
        }
    </style>

</head>
<body>
    <h2 class="demo">这是第一个h2标签</h2>
    <h2>这是第二个h2标签</h2>
    <ul>
        <li class="demo">这是一段文本</li>
        <li>这是一段文本</li>
        <li>这是一段文本</li>
    </ul>
</body>
</html>

3.后代选择器

后代选择器 先找到 class值为 desc的标签,然后再在这个标签中寻找标签为li的子标签,并对其中的内容进行设置

<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>后代选择器</title>
    <style>
        .desc li {
            color: red;
        }
    </style>

</head>
<body>
    <div class="desc">
        <ul>
            <li>上海</li>
            <li>北京</li>
            <li>深圳</li>
        </ul>
        <ul>
            <li>iOS</li>
            <li>Java</li>
            <li>.net</li>
        </ul>
        <ul>
            <!--通过后代选择器去设置文本的CSS样式这样后添加的文本也能获得之前设置的样式-->
            <li>再添加一行</li>
            <li>再添加一行</li>
            <li>再添加一行</li>
        </ul>
    </div>
    <div>
        <ul>
            <li>姓名</li>
            <li>年龄</li>
            <li>电话</li>
        </ul>
    </div>
</body>
</html>

4.并集选择器

如果多个标签内的文本CSS样式需求是相同的那么可以采用这种方式

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>并集选择器</title>
    <style>
        p, h1, h2 {
            color: red;
        }
    </style>
</head>
<body>
    <p>这是一个段落</p>
    <h1>这是h1标题</h1>
    <h2>这是h2标题</h2>
    <ul>
        <li>哈哈</li>
        <li>呵呵</li>
        <li>啊啊</li>
    </ul>
</body>
</html>

5.子代选择器

找到第二层的p标签之后就不再往后再找,所以第四层的p标间的文本颜色无法改变

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>子代选择器</title>
    <style>
        div > p {
            color: yellowgreen;
        }
    </style>
</head>
<body>
    <div>
        <p>这是第一个段落</p>
        <p>这是第二个段落</p>
        <h1>这是一个h1标题</h1>
        <p><a href="http://www.baidu.com">点击跳转到百度界面</a> </p>
        <ul>
            <li>
                <p>这是最里层的p标签</p>
            </li>
        </ul>

    </div>
</body>
</html>

6.属性选择器

把同时拥有 id 和 class属性的h1标签中的文本进行设置

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>属性选择器</title>
    <style>
        h1[id][class] { color: red; }
        
        input[type="password"] { background: darkgreen; }
    </style>
</head>
<body>
    <h1 class="desc" id="haha">这是h1标题</h1>
    <h1>这也是h1标题</h1>
    <input type="text"><br>
    <input type="password" >
</body>
</html>

选择器的优先级

上文写到六种选择器的优先级,如果在一个在设置一个元素的颜色和样式的时候既用了后代选择器又用了属性选择器,那么这个元素的到底遵从哪一个设置?这里就牵扯到了优先级问题,优先级我已经总结好了。优先级如下:

 选择器优先级排序
           行内选择器 > id选择器 > 类选择器 > 标签选择器 > 通配符选择器 > 继承 > 系统默认样式
           注意:
           在复合选择其中如果两个复合选择器对同一段文本进行样式设置的时候遵循以下的方法
                   先比较两个复合选择器中行内选择器的个数如果都为0那么比较id选择器的个数如果相同再比较类选择器的个数...
                   ...通过这种方式才能判断出文本的最终样式

只是简单的写了一部分,后续会把自己学到的东西陆陆续续发出来。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,725评论 1 92
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,580评论 18 139
  • 转载请声明 原文链接地址 关注公众号获取更多资讯 第一部分 HTML 第一章 职业规划和前景 职业方向规划定位...
    程序员poetry阅读 16,510评论 32 459
  • 一:在制作一个Web应用或Web站点的过程中,你是如何考虑他的UI、安全性、高性能、SEO、可维护性以及技术因素的...
    Arno_z阅读 1,136评论 0 1
  • 在线阅读 http://interview.poetries.top[http://interview.poetr...
    程序员poetry阅读 114,222评论 24 450