每日思考(2019/12/9)

题目概览

  • 页面导入样式时,使用link和@import有什么区别?
  • 圣杯布局和双飞翼布局的理解和区别,并用代码实现
  • 用递归算法实现,数组长度为5且元素的随机数在2-32间不重复的值

题目解答

页面导入样式时,使用link和@import有什么区别?

  • link是XHTML标签,除了加载CSS外,还可以定义RSS等其他事务;@import属于CSS范畴,只能加载CSS
  • link引用CSS时,在页面载入时同时加载;@import需要页面网页完全载入以后加载。所以会出现一开始没有css样式,闪烁一下出现样式后的页面(网速慢的情况下)
  • link是XHTML标签,无兼容问题;@import是在CSS2.1提出的,低版本的浏览器不支持
  • link支持使用Javascript控制DOM去改变样式;而@import不支持
  • 扩展:CSS四种引入方式
    • 内联样式:也叫行内样式,指的是直接在 HTML 标签中的 style 属性中添加 CSS。这通常是个很糟糕的书写方式,它只能改变当前标签的样式,如果想要多个 <div> 拥有相同的样式,你不得不重复地为每个 <div> 添加相同的样式,如果想要修改一种样式,又不得不修改所有的 style 中的代码。很显然,内联方式引入 CSS 代码会导致 HTML 代码变得冗长,且使得网页难以维护。

      <div style="display: none;background:red"></div>
    • 嵌入样式:指的是在 HTML 头部中的 <style> 标签下书写 CSS 代码。嵌入方式的 CSS 只对当前的网页有效。因为 CSS 代码是在 HTML 文件中,所以会使得代码比较集中,当我们写模板网页时这通常比较有利。因为查看模板代码的人可以一目了然地查看 HTML 结构和 CSS 样式。因为嵌入的 CSS 只对当前页面有效,所以当多个页面需要引入相同的 CSS 代码时,这样写会导致代码冗余,也不利于维护。
      <head>
          <style>
          .content {
              background: red;
          }
          </style>
      </head>
    • 链接样式:指的是使用 HTML 头部的 标签引入外部的 CSS 文件,这是最常见的也是最推荐的引入 CSS 的方式。使用这种方式,所有的 CSS 代码只存在于单独的 CSS 文件中,所以具有良好的可维护性。并且所有的 CSS 代码只存在于 CSS 文件中,CSS 文件会在第一次加载时引入,以后切换页面时只需加载 HTML 文件即可
      <head>
          <link rel="stylesheet" type="text/css" href="style.css">
      </head>
    • 导入样式:指的是使用 CSS 规则引入外部 CSS 文件
      <style>
          @import url(style.css);
      </style>
      @charset "utf-8";
      @import url(style.css);
      *{ margin:0; padding:0;}
      .notice-link a{ color:#999;}

圣杯布局和双飞翼布局的理解和区别,并用代码实现

  • 作用:圣杯布局和双飞翼布局解决的问题是一样的,就是两边顶宽,中间自适应的三栏布局,中间栏要在放在文档流前面以优先渲染
  • 圣杯布局:为了中间div内容不被遮挡,将中间div设置了左右padding-left和padding-right后,将左右两个div用相对布局position: relative并分别配合right和left属性,以便左右两栏div移动后不遮挡中间div
    <body>
    <div id="hd">header</div>
    <div id="bd">
      <div id="middle">middle</div>
      <div id="left">left</div>
      <div id="right">right</div>
    </div>
    <div id="footer">footer</div>
    </body>
    <style>
    #hd{
        height:50px;
        background: #666;
        text-align: center;
    }
    #bd{
        /*左右栏通过添加负的margin放到正确的位置了,此段代码是为了摆正中间栏的位置*/
        padding:0 200px 0 180px;
        height:100px;
    }
    #middle{
        float:left;
        width:100%;/*左栏上去到第一行*/
        height:100px;
        background:blue;
    }
    #left{
        float:left;
        width:180px;
        height:100px;
        margin-left:-100%;
        background:#0c9;
        /*中间栏的位置摆正之后,左栏的位置也相应右移,通过相对定位的left恢复到正确位置*/
        position:relative;
        left:-180px;
    }
    #right{
        float:left;
        width:200px;
        height:100px;
        margin-left:-200px;
        background:#0c9;
        /*中间栏的位置摆正之后,右栏的位置也相应左移,通过相对定位的right恢复到正确位置*/
        position:relative;
        right:-200px;
    }
    #footer{
        height:50px;
        background: #666;
        text-align: center;
    }
    </style>
  • 双飞翼布局:为了中间div内容不被遮挡,直接在中间div内部创建子div用于放置内容,在该子div里用margin-left和margin-right为左右两栏div留出位置
    <body>
    <div id="hd">header</div>
      <div id="middle">
        <div id="inside">middle</div>
      </div>
      <div id="left">left</div>
      <div id="right">right</div>
      <div id="footer">footer</div>
    </body>
    <style>
    #hd{
        height:50px;
        background: #666;
        text-align: center;
    }
    #middle{
        float:left;
        width:100%;/*左栏上去到第一行*/
        height:100px;
        background:blue;
    }
    #left{
        float:left;
        width:180px;
        height:100px;
        margin-left:-100%;
        background:#0c9;
    }
    #right{
        float:left;
        width:200px;
        height:100px;
        margin-left:-200px;
        background:#0c9;
    }
    /*给内部div添加margin,把内容放到中间栏,其实整个背景还是100%*/
    #inside{
        margin:0 200px 0 180px;
        height:100px;
    }
    #footer{
       clear:both; /*记得清楚浮动*/
       height:50px;
       background: #666;
       text-align: center;
    }
    </style>

用递归算法实现,数组长度为5且元素的随机数在2-32间不重复的值

function buildArray(arr, length, min, max) {
    var num = Math.floor(Math.random() * (max - min + 1)) + min;
    if (!arr.includes(num)) { arr.push(num); }
    return arr.length === length ? arr : buildArray(arr, length, min, max);
}
var result = buildArray([], 5, 2, 32);
console.table(result);

原文地址:https://www.cnblogs.com/EricZLin/p/12014087.html

时间: 2024-08-30 15:13:52

每日思考(2019/12/9)的相关文章

2019.12.5-特征布局,新闻列表 代码

<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8"> <title>特征布局</title></head><style type="text/css"> .news_list_com{ width: 600px; height: 290px; border:1px solid #ddd

2019.12.09-新闻列表布局代码

<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8"> <title>特征布局</title></head><style type="text/css"> .news_list_com{ width: 600px; height: 290px; border:1px solid #ddd

解题报告-2019.12.16

解题报告-2019.12 题目:6-3[拓展编程题_课后练习3][P215 习题8-三-4] 报数 (20分) 题目详情: 报数游戏是这样的:有n个人围成一圈,按顺序从1到n编好号.从第一个人开始报数,报到m(<n)的人退出圈子:下一个人从1开始报数,报到m的人退出圈子.如此下去,直到留下最后一个人. 本题要求编写函数,给出每个人的退出顺序编号. 函数接口定义:void CountOff( int n, int m, int out[] ); 其中n是初始人数:m是游戏规定的退出位次(保证为小于

每日思考(2019/12/10)

题目概览 html的元素有哪些(包含H5)? CSS3有哪些新增的特性? 写一个方法去掉字符串中的空格 题目解答 html的元素有哪些(包含H5)? 布局标签 div 标签定义文档中的分区或节(division/section),可以把文档分割为独立的.不同的部分,主要用于布局. aside 标签的内容可用作文章的侧栏,html5新增标签 header 标签定义页面的头部(介绍信息),html5新增标签 section 标签定义文档中的节(section.区段).比如章节.页眉.页脚或文档中的其

每日思考(2019/12/11)

题目概览 HTML全局属性(global attribute)有哪些(包含H5) 在页面上隐藏元素的方法有哪些? 去除字符串中最后一个指定的字符 题目解答 HTML全局属性(global attribute)有哪些(包含H5) 属性 描述 accesskey 规定激活元素的快捷键. class 规定元素的一个或多个类名(引用样式表中的类). contenteditable 规定元素内容是否可编辑. contextmenu 规定元素的上下文菜单.上下文菜单在用户点击元素时显示. data-* 用于

每日思考(2019/12/14)

题目概览 label都有哪些作用?并举相应的例子说明 用css创建一个三角形,并简述原理 写一个去除制表符和换行符的方法 题目解答 label都有哪些作用?并举相应的例子说明 表示用户界面中某个元素的说明增加命中区域,屏幕阅读器可以读出标签.使使用辅助技术的用户更容易理解输入哪些数据,单击关联标签激活input,需给input一个id属性,给label一个for属性,设为同一个值:有两个属性,for和accesskey,for 属性用来关联表单,accesskey属性设置快捷键 <label f

每日思考(2019/12/15)

题目概览 iframe框架都有哪些优缺点? 简述你对BFC规范的理解 统计某一字符或字符串在另一个字符串中出现的次数 题目解答 iframe框架都有哪些优缺点? 概念:frame是一种框架,也是一种很常见的网页嵌入方式 <iframe id='ifr1' url='https:xxxxx' width='1080px' height='960px'></iframe> 优点 iframe能够原封不动的把嵌入的网页展现出来:可以实现异步刷新,单个 iframe 刷新不影响整体窗口的刷

每日思考(2019/12/16)

题目概览 浏览器内多个标签页之间的通信方式有哪些 简述下你理解的优雅降级和渐进增强 写一个判断数据类型的方法 题目解答 浏览器内多个标签页之间的通信方式有哪些 WebSocket(可跨域) postMessage(可跨域) SharedWorker Server-Sent Events localStorage BroadcastChannel IE不支持 Cookies 简述下你理解的优雅降级和渐进增强 渐进增强(Progressive Enhancement):一开始就针对低版本浏览器进行构

每日思考(2019/12/17)

题目概览 viewport常见设置都有哪些? 对比下px.em.rem有什么不同? 简要描述下什么是回调函数 题目解答 viewport常见设置都有哪些? 概念:viewport 就是视区窗口,也就是浏览器中显示网页的部分.PC 端上基本等于设备显示区域,但在移动端上 viewport 会超出设备的显示区域(即会有横向滚动条出现).设备默认的 viewport 在 980 - 1024 之间 属性设置 <!-- width=device-width, initial-scale=1.0 是为了兼