HTML(四) 样式,脚本的插入使用

样式

样式的插入方式的几种方式:

第一种:行内样式

通过元素的style属性,style="font-size:16px"

缺点:

(1)大量的重复代码,维护困难

(2)特殊效果无法实现,如:鼠标的移入等

<span style="font-size:16px">你号!</span>

第二种:内嵌样式

通过style元素实现,

<style>

    p{font-size:16px}

</style>
<p>你好</p>

假如有多个p元素,使用这种方式可以同时生效

缺点:

(1)无法跨文档重复使用

第三种:外联样式(推荐)

这种方式通过<link>来实现,具体方式是,将第二种方式里面的style内容提取出来,单独存放在一个css文件里,然后在文档中引入就可以了,这种方式引入的css样式,是可以跨文档生效的

<link rel="stylesheet" href="style.css">

 

外联样式详解

<link rel="stylesheet" href="style.css" type="text/css" media="all">
  • rel="stylesheet":当前文档与资源之间的关系,合法的link元素必须要有rel属性;

也可以设置,这代表一个超链接:

<link href="1.html" rel="prev" rev="next">

<link href="1.html" rel="next" rev="prev">

也可以设置,这代表一个外联资源

<!--这一段定义了文档标题前面的小图标-->
<link rel="icon" href="fac.png" size="16x16" type="image/png">


<link rel="stylesheet" href="style.css"><!--文档样式-->

多个rel关键字空格隔开

 

  • href="style.css":引用资源的地址,合法的link元素必须要有href属性,必须是合法的URL地址
  • type="text/css":资源的MIME类型,可以不设置;
  • media="all":描述资源生效时的媒体信息;
<link rel="stylesheet" href="style.css" type="text/css" media="(max-width:800px)">
<!--当宽度低于800px的时候生效,注意:max-width外的()不能少,少了就不生效了-->
<link rel="stylesheet" href="style.css" type="text/css" media="print">

练习

响应式的插入css样式表:

<!DOCTYPE html>
<html lang="cn">
<head>
    <meta charset="UTF-8">
    <title>样式学习</title>
    <link rel="stylesheet" href="css/style.css" media="all">
    <link rel="stylesheet" href="css/style1.css" media="(max-width: 1600px)">
</head>
<body>
<div class="div1"></div>
<div class="div2"></div>
</body>
</html>

解释:

定义了两个css文件,第一个文件是默认生效的,第二个当页面宽度小于1600px时生效,针对两个<div>的样式随之改变,达到响应式的效果

练习2:

当点击“页面打印”的时候时,希望显示为打印的页面效果

<link rel="stylesheet" href="style.css" media="print">

 

脚本

先简单说一下脚本,也就是js,其最主要的功能就是实现一些页面上交互效果,以及页面上数据交互

大致插入的方式有三种:

第一种:行内脚本

最常见的是方式是使用事件的方式触发

  • 事件触发,例如:<input type="button" οnclick="window.alert("hello word!")">;
  • javascript伪协议,例如:<a href="javascript:alert('hello world!');return false">hello</a>

第二种:内嵌脚本

这种主要通过script方式内嵌,例如

<script>

    var text="hello world!"

    document.write('<p>'+text+'</p>');

</script>

内嵌的使用一定要注意闭合标签:

<script>

    var text="hello world!"

    document.write('<p>'+text+'</p>');    

    document.write('<script src='as.js'></script>');    
/* 这种写法是错误的,因为这一行包含了一个</script>标签,浏览器会默认认为这是一个闭合标签,正确写法
*  应该是document.write('<script src='as.js'></scr'+'ipt>');使用字符串的方式拼接,或
*  者: document.write('<script src='as.js'>&lt;/script>');,将<号使用实体字符转义 
*/
</script>

第三种:外联脚本   

<script>元素实现,需要将js代码放在js文件中,通过src这个属性引用进来,type的值默认text/javascript,实际应用中不建议写

 

在ES6中加入了一个重要的特性叫做,module(模块化),载入其他模块的方式(es6为例)

<script type="module">

    inport{test,greet} from "../js/as.js"

</script>

export function test(){

}

export function greet(){

}

我们把type类型为javascript的称为classic scripts,把type类型为module成为module scripts

 

                               脚本类型(通常不写)                              跨域文本处理                执行脚本方式

<script src="as.js"  type="text/javascript" charst="UTF-8" crossorigin="anonymous" async defer></script>

          脚本引用地址                             编码方式(可以不写)

 

 

                                脚本类型                 跨域文本处理          执行脚本方式

<script src="as.js"  type="module"   crossorigin="anonymous" async></script>

          脚本引用地址                                

 

async/defer执行方式

这两个属性都是布尔属性,要么true,要么false,

  • async:立即执行
  • defer:HTML文件解析完才可以执行

假如同时存在,优先async规则

 

课后练习

使用JS的方式,实现响应式

提示:window.onresize,window.clientWidth,element.className

方法一:

    <script>
        window.onresize=function () {
            //alert(width());
            if (width()>=700){
                document.getElementById("div1").className="div1";
                document.getElementById("div2").className="div2";
            }
            else if(width()<700){
                document.getElementById("div1").className="div3";
                document.getElementById("div2").className="div4";
            }
        };
        function width() {
            var widthMax=document.body.clientWidth;
            return widthMax;
        }

    </script>

解释:

通过window.onresize方法实时判断窗口是否有改变,然后通过document.body.clientWidth方法获得窗口的宽度,根据不同的宽度调整样式;

但是这里遇到几个问题:

(1)onresize多次触发的问题,当改变窗口大小时,onresize被触发了多次;

(2)这个调整比较麻烦,假如元素过多时,调整很麻烦;

因此,修改一下要求,改成:还是响应式,但是根据窗口的大小,动态创建css文件引入,已达到响应的效果

想了一下,要达到css的那个media的效果,分为几步

(1)实时获得窗口宽度

(2)根据宽度修改css文件的引用,变相达到了style中自适应的效果

<!DOCTYPE html>
<html lang="cn">
<head>
    <meta charset="UTF-8">
    <title>脚本学习</title>
    <link rel="stylesheet" type="text/css" id="style">
    <script>
        var css1="css/style.css",css2="css/style1.css";
        window.onload=function () {
          if( width()>700){
              document.getElementById("style").href=css1;
          }
          else {
              document.getElementById("style").href=css2;
          }
        };
        window.onresize=function () {
            if (width()>=700){
                document.getElementById("style").href=css1;
            }
            else if(width()<700){
                document.getElementById("style").href=css2;
            }

        };
        function width() {
            var widthMax=document.body.clientWidth;
            return widthMax;
        }
    </script>
</head>
<body>
<div class="div1" id="div1"></div>
<div class="div2" id="div2"></div>
</body>
</html>

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Oliver尹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值