1 HTML and CSS

《从0到1:HTML+CSS快速上手》 HTML的基本结构,从中我们可以看出,一个页面是由4个部分组成的。html标签对:。head标签对:。body标签对:。大多数静态页面都是由以下4种元素组成的。 阅读详情

HTMl(超文本标记语言)


HTML 概述

超文本标记语言用来描述和定义网页的内容
HTML(超文本标记语言——HyperText Markup Language)是构成 Web 世界的一砖一瓦;它定义了网页内容的含义和结构
“超文本”(hypertext)是指连接单个网站内或多个网站间的网页的链接

1. HTML标签功能区分

<!DOCTYPE html>
<!-- * 语言设置 -->
<html lang="en">
  <head>
    <!-- ** 元信息 -->
    <!-- * 字符集设置 -->
    <meta charset="UTF-8" />
    <!-- * IE 兼容 -->
    <!--
      ? http-equiv="X-UA-Compatible" IE 特有属性
      ? content="IE=edge" 规定 IE 使用最新版本的标准模式渲染
     -->
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />

    <!-- * referrer 设置 -->
    <meta name="referrer" content="no-referrer" />

    <!-- * 移动端兼容 -->
    <!-- 
      ? name="viewport" 移动端设置
      ? width=device-width 可视区域的宽度为设备宽度
      ? height=device-height 可视区域的高度为设备高度
      ? initial-scale=1.0 页面首次被显示时可视区域的缩放级别,取值1.0则页面按实际尺寸显示,无任何缩放
      ? maximum-scale=1.0, minimum-scale=1.0 可视区域的缩放级别
      ? user-scalable 是否可对页面进行缩放,no 禁止缩放
     -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <!-- * 标题 -->
    <title>功能区分</title>
    <!-- * 介绍 -->
    <meta name="description" content="网页介绍" />
    <!-- * 关键字 -->
    <meta name="keywords" content="网页关键字" />

    <!-- * 链接默认地址、默认打开方式 -->
    <!-- 
      ? 1. href:url;
      ? 2. target:在何处打开链接; 
      ? _blank:新窗口;_parent:上一级窗口;_self:当前窗口(默认);_top:在浏览器的整个窗口打开链接,忽略任何框架
    -->
    <base href="" target="_blank" />

    <!-- * 引入首页样式 -->
    <link rel="stylesheet" href="./css/index.css" />
    <!-- * 引入首页脚本 -->
    <script src="index.js" async></script>
  </head>
  <body>
    <!-- ** 语义化标签 -->
    <h1-h6>一 ~ 六级标题</h1-h6>
    <p>段落</p>
    <div>块</div>
    <span>行内块</span>

    <!-- ** HTML5 新增HTML语义化标签 -->
    <header>头部</header>
    <nav>导航</nav>
    <main>主体</main>
    <article>章</article>
    <section>节</section>
    <aside>侧边栏</aside>
    <footer>底部</footer>

    <!-- ** 超链接 -->
    <a href="http://www.baidu.com" target="_blank"></a>

    <!-- ** 图像 -->
    <img src="./image/logo.png" alt="图像替换文本" />

    <!-- * 列表 -->
    <!-- * 有序列表 -->
    <ul>
      <li>列表项</li>
    </ul>
    <!-- * 无序列表 -->
    <ol>
      <li>列表项</li>
    </ol>
    <!-- * 定义列表 -->
    <dl>
      <dt>列表项目</dt>
      <dd>列表项目描述</dd>
    </dl>

    <!-- ** 表格 -->
    <!-- 
      ? border:边框
      ? cellpadding:单元格间距
      ? cellspacing:单元格内边距 
    -->
    <table border="1" cellpadding="0" cellspacing="0">
      <!-- * 表格头部 -->
      <thead>
        <tr>
          <th>表头</th>
        </tr>
      </thead>
      <!-- * 表格脚注 -->
      <tfoot></tfoot>
      <!-- * 表格主体 -->
      <tbody>
        <tr>
          <td>单元格</td>
        </tr>
      </tbody>
    </table>

    <!-- ** 表单 -->
    <!-- 
      ? action:提交地址;
      ? method:提交方式 
    -->
    <form action="http://www.baidu.com" method="post">
      <!-- 
        ? value="初始值"
        ? placeholder="提示文本"
        ? checked="加载时是否选中(true、false)"
        ? disabled 加载时输入字段禁用
        ? readonly 加载时输入字段只读
        ? autofocus 加载时自动获取焦点
       -->
      <!-- * input 输入框 -->
      <input type="text" />
      <!-- 输入框 -->
      <input type="password" name="name" id="id" />
      <!-- 密码框 -->
      <input type="button" value="value" />
      <!-- 按钮(不触发提交) -->
      <input type="checkbox" name="name" id="id" />
      <!-- 复选框 -->
      <input type="radio" name="name" id="id" />
      <!-- 单选框 -->
      <label for="name">元素标注</label>
      <!-- 元素标注  -->
      <input type="file" name="name" id="id" />
      <!-- 文件提交 -->
      <input type="image" src="src" alt="alt" />
      <!-- 图像形式文件提交 -->
      <input type="reset" value="value" />
      <!-- 表单重置 -->
      <input type="submit" value="value" />
      <!-- 表单提交 -->

      <!-- * input HTML5新增属性 -->
      <input type="search" name="name" id="id" />
      <!-- 搜索框 -->
      <input type="color" name="name" id="id" />
      <!-- 颜色选择器 -->
      <input type="range" name="name" id="id" />
      <!-- 滑动选择框 -->
      <input type="date" name="name" id="id" />
      <!-- 日期选择框 -->
      <input type="time" name="name" id="id" />
      <!-- 时间选择框 -->
      <input type="datetime-local" name="name" id="id" />
      <!-- 日期,时间选择框 -->
      <input type="url" name="name" id="id" />
      <!-- url输入框:提交验证 -->
      <input type="email" name="name" id="id" />
      <!-- email输入框:提交验证 -->
      <input type="number" name="name" id="id" />
      <!-- 数字输入框:提交验证 -->
      <input type="tel" name="name" id="id" />
      <!-- 手机号码输入框:提交验证 -->

      <!-- * button 按钮(触发提交操作) -->
      <button></button>

      <!-- * textarea 文本域 -->
      <textarea name="name" id="id" cols="30" rows="10"></textarea>

      <!-- * select 下拉框 -->
      <select name="name" id="id"></select>
      <!-- 下拉框选项 -->
      <option value="value"></option>
    </form>

    <!-- ** 脚本 -->
    <script src="./js/vue.js"></script>

    <!-- ** 样式 -->
    <style></style>

    <!-- ** 音、视频 -->
    <!-- 
      ? src:url地址
      ? autoplay:是否自动播放
      ? loop:重复播放
      ? muted:是否静音
      ? controls: 显示控件
    -->
    <audio src="url" autoplay loop muted controls></audio>
    <video src="url" autoplay loop muted controls></video>

    <!-- ** 图形 -->
    <canvas></canvas>

    <!-- ** 格式化标签(不推荐) -->
    <i>斜体</i>
    <em>强调文本</em>
    <b>粗体</b>
    <strong>强调文本</strong>
    <u>下划线</u>
    <ins>插入</ins>
    <s>删除线</s>
    <del>删除文本</del>
    <sup>上标</sup>
    <sub>下标</sub>
  </body>
</html>

2. HTML标签显示区分

块元素

  1. 可设置“width”和“height”
  2. 默认情况下,元素的宽度会占满整行,这就意味着块级元素的宽度会受到父级元素的宽度影响,而且不管元素是否占满整行,它的兄弟元素都会另起一行
<div></div>
<h1-h6></h1-h6>
<p></p>
<ol></ol>
<ul></ul>
<dl></dl>
<table></table>
<form action=""></form>

内联元素(行内元素)

  1. 不能设置“width”和“height”
  2. 默认情况下,元素的默认宽度为content的宽度,高度由font-size决定,内联元素在未填满父级元素的时候会水平排列,一般只会用来承载内容
  3. 行内元素在水平方向上的padding、border、margin的特性和块元素一模一样
  4. 行内元素在垂直方向上的padding和border可以设置,但是不参与布局,margin不能设置
  5. 除了a元素,行内元素不能包含块元素
  6. 行内元素脱离文档流后,会变成块元素
<a href=""></a>
<span></span>
<label for=""></label>
<code></code>
<!-- 格式化标签 -->
<i>斜体</i>
<em>强调文本</em>
<b>粗体</b>
<strong>强调文本</strong>
<u>下划线</u>
<ins>插入</ins>
<s>删除线</s>
<del>删除文本</del>
<sup>上标</sup>
<sub>下标</sub>

行内块元素

  1. 可设置“width”和“height”
  2. 相对与内联元素的优点是可以设置宽高,缺点是块级内联元素之间会出现间隙,解决办法是设置父级元素 font-size:0
<img src="" alt="">
<input type="text">
<select name="" id=""></select>
<button></button>
<textarea name="" id="" cols="30" rows="10"></textarea>

3. HTML语义化

HTML5的语义化指的是合理正确的使用语义化的标签来创建页面结构,暨正确的标签做正确的事

语义化的优点

  • 在没CSS样式的情况下 页面整体也会呈现很好的结构效果
  • 代码结构清晰 易于阅读
  • 利于开发和维护 方便其他设备解析(如屏幕阅读器)根据语义渲染网页
  • 有利于搜索引擎优化(SEO) 搜索引擎爬虫会根据不同的标签来赋予不同的权重

CSS(层叠样式表)


CSS 概述

层叠样式表用来描述 Web 内容的外观
层叠样式表 (Cascading Style Sheets,缩写为 CSS),是一种 样式表 语言,用来描述 HTML 或 XML(包括如 SVG、MathML、XHTML 之类的 XML 分支语言)文档的呈现;
CSS 描述了在屏幕、纸质、音频等其它媒体上的元素应该如何被渲染的问题
CSS 是开放网络的核心语言之一,由 W3C 规范 实现跨浏览器的标准化

1. 盒模型

当对一个文档进行布局(layout)的时候,浏览器的渲染引擎会根据标准之一的 CSS 基础框盒模型 (CSS basic box model),将所有元素表示为一个个矩形的盒子(box) ,这个盒子,就是盒模型
一个盒子由四个部分组成: content + padding + border + margin

标准盒模型

浏览器默认的盒子模型,内容只为内容

  • 盒子总宽度(width) = (contentWidth ) + padding + border + margin
  • 盒子总高度(height) = (contentHeight ) + padding + border + margin
box-sizing: content-box

怪异盒模型

内容为 内容 + padding + border

  • 盒子总宽度(width) = Width(contentWidth + padding + border) + margin
  • 盒子总高度(height) = Height(contentHeight + padding + border) + margin
box-sizing: border-box

2. 格式化上下文

css2.1 提出的概念,定义的是页面中的一块渲染区域,或者这么理解,就是页面中的一块独立的作用域,同一个格式化上下文的区域和不同格式化上下文之间的定位方式都会发生变化

BFC(块级格式化上下文)

  • BFC形成
    1. 根元素
    2. 脱离普通文档流的元素(浮动,固定定位,绝对定位等)
    3. 非块级元素(display设置了inline-block,table,flex)
    4. overflow属性值不为visible的块级元素
  • BFC影响
    1. BFC是页面上的独立作用域,内部元素不会和外部元素产生影响
    2. 同一个BFC内的相邻元素会发生垂直边距的折叠,即两者的边距取决于双方边距的最大值而不是总和
    3. 计算BFC时,内部浮动元素也会被计算在内
  • BFC应用场景
    1. 防止margin重叠(塌陷)
    2. 清除内部浮动

IFC(内联格式化上下文)

  • IFC形成
    1. 多个内联元素排列在一起的时候就形成一个IFC,这些内联元素直接不能穿插块级元素
  • IFC影响
    1. 一个IFC内的元素都是水平排列的
    2. 横向的margin、border、padding属性对这些元素都有效
    3. 垂直方向可以调整对齐方式

3. 三大特性

层叠性

  • (权重相同)样式作用到标签上,发生了样式冲突,后边的样式会把前边的样式给覆盖掉(层叠掉)
  • 就近原则
  • 复合属性不写的值,取默认值

继承性

  • 子元素和父元素样式没有冲突的时候,子元素会继承父元素的某些样式
    1. 字体属性(font)
    2. 文本属性(text)
    3. 元素可见性(visibilit)
    4. 表格布局属性
    5. 列表属性(list)
    6. 光标属性(cursor)
  • a 标签的字体颜色不能被继承
  • h1-h6标签字体的大小也是不能被继承的

优先级

∞
    !important
1,0,0,0
    行内样式(style)
0,1,0,0
    ID选择器(#id)
0,0,1,0
    类选择器(.class)
    伪类选择器(:hover)
    属性选择器([type="radio"])
0,0,0,1
    元素选择器(div)
    伪元素选择器(::before)
0,0,0,0
    通配符选择器(*)
  继承
    浏览器自带
其他选择器(对权重的计算没影响,即不参与计算)
    选择连接符:+,>,-, ,||
  • 多个(样式作用到同一个(类.标签),发生了样式冲突,权重高的先执行
  • !important > 行内式 > id > class > element > * > 浏览器自带 > 继承
  • 不同的选择器作用到同一个类(标签),权重会叠加(相加);权重可以叠加但不可以进位
  • 当子元素和父元素样式发生冲突的时候,权重相同的情况下,永远会执行子元素自身的样式

4. CSS 属性书写(顺序)

善用继承 inherit 书写样式

内容显示

display { // 元素显示模式
  display: block; // 块级
  display: inline; // 内联
  display: inline-block; // 行内块
  display: flex; // 弹性盒子
  display: grid; // 网格布局
  display: none; // 不显示(占据空间消失,引起回流/重排和重绘)
}

visibility { // 元素是否可见
  visibility: visible; // 元素可见(默认)
  visibility: hidden; // 元素不可见(占位置,引起重绘)
  visibility: collapse; // 表格元素中使用时,此值可删除一行或一列
}

overflow { // 元素溢出
  overflow: visible; // 内容不会被修剪(默认)
  overflow: hidden; // 内容会被修剪,并且其余内容是不可见的
  overflow: scroll; // 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容
  overflow: auto; // 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容
}

opacity { // 元素的不透明级别(支持过度)
  opacity: 1; // 不透明
  opacity: 0; // 透明
}

vertical-align { // 元素垂直对齐方式
  vertical-align: baseline; // 默认(对齐父元素基线)
  vertical-align: middle; // 父元素中部
  vertical-align: top; // 元素顶端与行内元素最高元素顶端对齐
  vertical-align: bottom; // 元素底端与行内元素最底元素底端对齐
}

position(定位)

position { // 定位
  position: relative // 相对定位(基于偏移前位置)
  position: absolute // 绝对定位(脱标,基于最近一级带有定位的父元素定位(最终为浏览器窗口,若浏览器滚对则随之滚动),左右margin失效)
  position: fixed // 固定定位(脱标,基于浏览器窗口,浏览器滚对不随之滚动)
  position: sticky // 粘性定位(可以被认为是相对定位和固定定位的混合。元素在跨越特定阈值前为相对定位,之后为固定定位)
  position: static // 静态定位(默认)
}

float(浮动)

float { // 浮动(脱标)
  float: left // 左浮动
  float: right // 右浮动
  float: none // 无浮动
}

尺寸

width { // 宽度
  width: auto; // 宽度
  min-width: none; // 最小宽度
  max-width: none; // 最大宽度
}

height { // 高度
  height: auto; // 高度
  min-width: none; // 最小高度
  max-width: none; // 最小高度
}

box(布局盒子)

border { // 边框
  border: 1px solid #ccc; // 简写属性
    border-width: 1px; // 边框宽度
    border-style: solid; // 边框样式(solid:实线, dashed:虚线, dotted:点状, double:双线, none:无)
    border-color: #ccc; // 边框颜色
  
  border-radius: 50%; // 圆角边框(上左/上右/下右/下左)
}

outline { // 轮廓
  outline: 1px solid #ccc; // 简写属性
    outline-width: 1px; // 轮廓宽度
    outline-style: solid; // 轮廓样式(solid:实线, dashed:虚线, dotted:点状, double:双线, none:无)
    outline-color: #ccc; // 轮廓颜色
}

margin { // 外边距
  margin: 10px; // 简写属性(上/右/下/左; 上/左右/下; 上下/左右)
    margin-top: 10px;
    margin-right: 10px;
    margin-bottom: 10px;
    margin-left: 10px;
}

padding { // 内边距
  padding: 10px; // 简写属性(上/右/下/左; 上/左右/下; 上下/左右)
    padding-top: 10px;
    padding-right: 10px;
    padding-bottom: 10px;
    padding-left: 10px;
}

box-shadow { // 阴影
  * ? h-shadow 水平阴影位置,允许负值
  * ? v-shadow 垂直阴影位置,允许负值
  * ? blur 模糊距离
  * ? spread 尺寸
  * ? color 颜色
  * ? inset 将外部阴影 (outset) 改为内部阴影; 
  
  box-shadow: 1px 1px 5px 2px #ccc inset;
}

background(背景)

注意: position 与 size 属性共同声明时:需用 / 进行分割

background { // 背景
  background: #ccc cover/center no-repeat content-box border-box fixed url(./image/logo.png); // 简写属性
    background-color: #fff; // 背景颜色
    background-size: cover; // 背景大小(x, y, cover, contain) // ? cover:把背景图像扩展至足够大,以使背景图像完全覆盖背景区域,背景图像的某些部分也许无法显示在背景定位																																	区域中; contain:把图像图像扩展至最大尺寸,以使其宽度和高度完全适应内容区域
    background-position: center; // 背景位置(x, y)
    background-repeat: no-repeat; // 背景是否重复(repeat, no-repeat, repeat-x, repeat-y)
    background-origin: content-box; // 背景定位区域(content-box, padding-box, border-box)
    background-clip: border-box; // 背景裁剪区域(content-box, padding-box, border-box)
    background-attachment: fixed; // 背景是否固定(fixed:固定, scroll:随着滚动)
    background-image: url(./image/logo.png); // 背景图片(none, url())
}

font(字体)

注意: 简写时 font-size and font-family 必须书写

font { // 字体
  font:12px/1 Arial, Helvetica, sans-serif; // 简写属性
    font-size: 12px; // 字体大小
    line-height: 1; // 行高
    font-family:Arial, Helvetica, sans-serif; // 字体系列
  font-weight: bold; // 字体粗细(400:normal, 700:bold)
}

text(文本)

text { // 文本
  color: #000; // 颜色
  line-height: 1; // 行高
  text-align: center; // 文本对齐方式(left:左对齐, right:右对齐, center:居中对齐, justify:两端对齐)
  text-decoration: none; // 文本装饰(underline:文本下的一条线, overline:文本上的一条线, line-through:穿过文本下的一条线, blink:闪烁的文本)
  text-indent: 2em; // 文本首行缩进
  text-transform: none; // 文本大小写(capitalize:单词首字母大写开头, uppercase:全大写, lowercase:全小写,)
  word-spacing: 1em; // 单词间距 
  white-space: nowrap; // 如何处理元素中的空白(normal:空白会被浏览器忽略(默认), nowrap:文本不会换行,文本会在在同一行上继续,直到遇到 <br> 标签为止,)
  text-overflow: ellipsis; // 文本溢出(clip:修剪文本, ellipsis:显示省略符号来代表被修剪的文本, string:使用给定的字符串来代表被修剪的文本,)
  text-shadow: none; // 文本阴影
}

list-style(列表样式)

list-style { // 列表样式
  list-style-type: none; // 标记类型(none)
  list-style-position: inside; // 标记位置(none)
  list-style-image: none; // 标记图片(none)
}

cursor(光标)

cursor { // 光标样式
  cursor: pointer; // 小手
  cursor: default; // 箭头
  cursor: crosshair; // 十字线
  cursor: move; // 移动
  cursor: text; // 指示文本
  cursor: wait; // 正忙(表或沙漏)
  cursor: help; // 可用的帮助(问号或一个气球)
}

table(表格样式)

table { // 表格样式
  border-collapse: collapse; // 是否合并表格边框()
  border-spacing: 0; // 单元格边框之间的距离(x, y)
  caption-side: center; // 表格标题的位置(left, right, top, bottom, center)
  empty-cells: show; // 隐藏表格中空单元格上的边框和背景(show:绘制, hide:不绘制)
  table-layout: auto; // 显示表格单元格、行、列的算法规则(auto:自动, fixed:列宽由表格宽度和列宽度设定)
}

transform(2D/3D转换)

transform { // 2D/3D转换
  transform: translate(x, y, z) scale(x, y, z) rotate(x, y, z); // 简写属性
    transform: translate(x, y, z); // 转换
    transform: scale(x, y, z); // 缩放(一般为: 1/2 倍数)
    transform: rotate(x, y, z); // 旋转
}

transition(过度)

transition { // 过度
  transition: all 1s linear 0s; // 简写属性
    transition-property: all; // 属性名称(all:所有属性)
    transition-duration: 1s; // 花费时间(以 s 为单位)
    transition-timing-function: linear; // 时间曲线(linear平均速度)
    transition-delay: 0s; // 何时开始(以 s 为单位)
}

animation(动画)

@keyframes identifier { // 定义关键帧
  from{ } // 起始
  to{ } // 结束
  %{ } // 百分比设置
}

animation { // 动画
  animation: identifier 1s linear 0s infinite alternate; // 简写属性
    animation-name: identifier; // 动画名称
    animation-duration: 1s; // 花费时间(以 s 为单位)
    animation-timing-function: linear; // 时间曲线(linear平均速度)
    animation-delay: 0s; // 何时开始(以 s 为单位)
        // 特有设置
    animation-iteration-count: infinite; // 播放次数(n:Number, infinite:无限)
    animation-direction: alternate; // 是否逆向播放(normal:正常播放, alternate:逆序播放)
    // 设置 infinite 后无效
    animation-play-state: paused; // 运行或暂停(running:正常播放, paused:暂停动画))
    // 设置 direction 后无效
    animation-fill-mode: forwards; // 动画时间之外状态(backwards:回归第一帧, forwards:保持最后帧)
}

5. CSS 布局

1. 普通流

默认布局、从左到右排列,当一行位置不够时,另起一行向下排列
除了受 padding 和 margin 的影响外,还受到 display 的影响

2. 浮动

浮动元素脱离标准流
该元素的下一个兄弟元素中有内联元素(通常是文字),则会围绕该元素显示,形成类似"文字围绕图片"的效果;即虽然浮动会让元素脱离文档流,但是文本内容会受到浮动元素的影响

float { // 浮动(脱标)布局
  float: left // 左浮动
  float: right // 右浮动
  float: none // 无浮动
}

3. 定位

position { // 定位布局
  position: relative // 相对定位
  position: absolute // 绝对定位(脱标)
  position: fixed // 固定定位(脱标)
  position: sticky // 粘性定位(相对定位和固定定位的混合。元素在跨越特定阈值前为相对定位,之后为固定定位,须指定 top, right, bottom 或 left 四个阈值其中之一,才可使粘性定位生效。否则其行为与相对定位相同)
  position: static // 静态定位(无定位)
}

4. flex

flex { // flex 布局
  display: flex; // 定义 flex 容器
  display: inline-flex; //定义行内 flex 容器
  // flex 容器
  flex-flow: flex-direction flex-wrap; // 简写属性
    flex-direction: row; // 主轴方向(row:水平start, row-reverse:水平end, column:垂直start, column-reverse:垂直end)
    flex-wrap: nowrap; // 是否换行显示(wrap:换行, nowrap:不换行)

  place-content: align-content justify-content; // 简写属性
    align-content: center; // 纵轴空间分配(该属性对单行弹性盒子模型无效)
    justify-content: center; // 主轴空间分配(flex-start:从左至右排列项目, flex-end:从右至左排列项目, center:居中排列项目, space-between:均匀排列每个元素、首个元素放	  置于起点,末尾元素放置于终点, space-around:每个元素周围分配相同的空间、两侧间距较少(显示), space-evenly:均匀排列每个元素、每个元素之间的间隔相等, stretch:均匀分布项目 		、拉伸‘auto’-大小的项目以充满容器)

  gap: row-gap column-gap; // 简写属性
    row-gap: 10px; // 元素行之间的间隙大小
    column-gap: 10px; // 元素列之间的间隙大小
  
  place-items: align-items justify-items; // 简写属性
    align-items: center; // 控制十字轴上项目的对齐方式(flex-start:从左至右排列项目, flex-end:从右至左排列项目, center:居中排列项目, stretch:均匀分布项目 、拉                                     伸‘auto’-大小的项目以充满容器)
    justify-items: center; // 为所有盒中的项目定义了默认的 justify-self(弹性布局中,该属性被忽略)

  // item 项目
  flex: flex-grow flex-shrink flex-basis; // 简写属性
    flex-grow: 1; // flex 增长系数
    flex-shrink: 1; // flex 收缩系数
    flex-basis: auto; // flex 元素初始大小

  justify-self: auto; // 单个盒子在其布局容器适当轴中的对齐方式(弹性布局中,该属性被忽略)
  
  align-self: center; // 对齐当前 grid 或 flex 行中的元素,并覆盖已有的 align-items 的值(属性不适用于块类型的盒模型和表格单元;如果任何 flexbox 元素的侧轴方向 margin 						  值设置为 auto,则会忽略 `align-self`)
}

5. grid

grid { // grid 布局
  display: grid; // 定义 grid 网格
  display: inline-grid; // 定义行内 grid 网格
  // gird 容器 
  grid-template-columns: 100px auto 100px; // fr 容器剩余空间单位 minmax(最小,最大) r
  grid-template-rows: 100px 100px;

  gap: column-gap row-gap; // 简写
    column-gap: 10px; // 列轨道宽度
    row-gap: 10px; // 行轨道宽度

  // 定义一个区域并为区域内项目进行命名(不需要命名使用 . )
  grid-template-areas: 'a b c'
                       'd e f'
                       'g h i';

  grid-auto-flow: row; // 项目排序方式(先行后列)默认,也可以设置 column 先列后行

  place-content: align-content justify-content; // 简写属性
    align-content: center; // 总体项目排列(需容器还有空间)
    justify-content: center; // 总体项目排列(需容器还有空间)

  grid-auto-columns: auto; // 隐式网格列设置
  grid-auto-rows: auto; // 隐式网格行设置

  // item 项目
  align-items: center; // 项目在轨道内垂直对齐方式(与flex相似)
  justify-items: center; // 项目在轨道内水平对齐方式(与flex相似)

  grid-column-start: 2; // 2 列轨道开始
  grid-column-end: 4; // 4 列轨道结束
  grid-row-start: 2; // 2 行轨道开始
  grid-row-end: 4; // 4 行轨道结束

  grid-area: b; // 制定项目放到哪个区域(需与 grid-template-areas 配合使用)

  justify-self: auto; // 单个盒子在其布局容器适当轴中的对齐方式(弹性布局中,该属性被忽略)
  
  align-self: center; // 对齐当前 grid 或 flex 行中的元素,并覆盖已有的 align-items 的值(属性不适用于块类型的盒模型和表格单元;如果任何 flexbox 元素的侧轴方向 margin 						  值设置为 auto,则会忽略 `align-self`)
}

6. 选择器

基础选择器

序号类型选择器例子例子描述CSS权重
1通配符选择器**选择所有元素。0,0,0,0
2标签选择器elementp选择所有
元素。
0,0,0,1
3类选择器.class.intro选择 class=“intro” 的所有元素。0,0,1,0
4id选择器#id#firstname选择 id=“firstname” 的所有元素。0,1,0,0

复合选择器语法

序号类型选择器例子例子描述CSS权重
1后代选择器element elementdiv p选择
元素内部的所有
元素。
0,0,0,1
2子代选择器element>elementdiv>p选择父元素为
元素的所有
元素。
0,0,0,1
3相邻兄弟选择器element+elementdiv+p选择紧接在
元素之后的所有
元素。
0,0,0,1
4通用选择器element1~element2p~ul选择前面有
元素的每个
元素。
0,0,1,0
5并集选择器element,elementdiv,p选择所有
元素和所有
元素。
0,0,0,1

伪元素选择器

序号类型选择器例子例子描述CSS权重
1伪元素选择器:first-letterp:first-letter选择每个
元素的首字母。
0,0,0,1
2伪元素选择器:first-linep:first-line选择每个
元素的首行。
0,0,0,1
3伪元素选择器:beforep:before在每个
元素的内容之前插入内容。
0,0,0,1
4伪元素选择器:afterp:after在每个
元素的内容之后插入内容。
0,0,0,1
5伪元素选择器::selection::selection选择被用户选取的元素部分。0,0,0,1

动态伪类选择器

序号类型选择器例子例子描述CSS权重
1链接伪类选择器:linka:link选择所有未被访问的链接。0,0,1,0
2链接伪类选择器:visiteda:visited选择所有已被访问的链接。0,0,1,0
3用户行为选择器:activea:active选择活动链接。0,0,1,0
4用户行为选择器:hovera:hover选择鼠标指针位于其上的链接。0,0,1,0
5用户行为选择器:focusinput:focus选择获得焦点的 input 元素。0,0,1,0

结构伪类选择器

序号类型选择器例子例子描述CSS权重
1结构伪类选择器:first-childp:first-child选择属于父元素的第一个子元素的每个
元素。
0,0,1,0
2结构伪类选择器:lang(language)p:lang(it)选择带有以 “it” 开头的 lang 属性值的每个
元素。
0,0,1,0
3结构伪类选择器:first-of-typep:first-of-type选择属于其父元素的首个
元素的每个
元素。
0,0,1,0
4结构伪类选择器:last-of-typep:last-of-type选择属于其父元素的最后
元素的每个
元素。
0,0,1,0
5结构伪类选择器:only-of-typep:only-of-type选择属于其父元素唯一的
元素的每个
元素。
0,0,1,0
6结构伪类选择器:only-childp:only-child选择属于其父元素的唯一子元素的每个
元素。
0,0,1,0
7结构伪类选择器:nth-child(n)p:nth-child(2)选择属于其父元素的第二个子元素的每个
元素。
0,0,1,0
8结构伪类选择器:nth-last-child(n)p:nth-last-child(2)同上,从最后一个子元素开始计数。0,0,1,0
9结构伪类选择器:nth-of-type(n)p:nth-of-type(2)选择属于其父元素第二个
元素的每个
元素。
0,0,1,0
10结构伪类选择器:nth-last-of-type(n)p:nth-last-of-type(2)同上,但是从最后一个子元素开始计数。0,0,1,0
11结构伪类选择器:last-childp:last-child选择属于其父元素最后一个子元素每个
元素。
0,0,1,0
12结构伪类选择器:root:root选择文档的根元素。0,0,1,0
13结构伪类选择器:emptyp:empty选择没有子元素的每个
元素(包括文本节点)。
0,0,1,0
14结构伪类选择器:target#news:target选择当前活动的 #news 元素。0,0,1,0
15结构伪类选择器:enabledinput:enabled选择每个启用的 元素。0,0,1,0
16结构伪类选择器:disabledinput:disabled选择每个禁用的 元素0,0,1,0
17结构伪类选择器:checkedinput:checked选择每个被选中的 元素。0,0,1,0

属性选择器

序号类型选择器例子例子描述CSS权重
1属性选择器[attribute][target]选择带有 target 属性所有元素。0,0,1,0
2属性选择器[attribute=value][target=_blank]选择 target=“_blank” 的所有元素。0,0,1,0
3属性选择器[attribute~=value][title~=flower]选择 title 属性包含单词 “flower” 的所有元素。0,0,1,0
4属性选择器[attribute|=value][lang|=en]选择 lang 属性值以 “en” 开头的所有元素。0,0,1,0
5属性选择器[attribute^=value]a[src^=“https”]选择其 src 属性值以 “https” 开头的每个 元素。0,0,1,0
6属性选择器[attribute$=value]a[src$=“.pdf”]选择其 src 属性以 “.pdf” 结尾的所有 元素。0,0,1,0
7属性选择器[attribute*=value]a[src*=“abc”]选择其 src 属性中包含 “abc” 子串的每个 元素。0,0,1,0

否定伪类选择器

序号类型选择器例子例子描述CSS权重
1否定伪类选择器:not(selector):not§选择非
元素的每个元素。
不计算权重

7. CSS 函数

函数描述CSS 版本
attr()返回选择元素的属性值。2
calc()允许计算 CSS 的属性值,比如动态计算长度值。3
cubic-bezier()定义了一个贝塞尔曲线(Cubic Bezier)。3
conic-gradient()定义了一个圆锥渐变。3
counter()设置计数器。3
hsl()使用色相、饱和度、亮度来定义颜色。3
hsla()使用色相、饱和度、亮度、透明度来定义颜色。3
linear-gradient()创建一个线性渐变的图像。3
max()从一个逗号分隔的表达式列表中选择最大的值作为属性的值。3
min()从一个逗号分隔的表达式列表中选择最小的值作为属性的值。3
radial-gradient()用径向渐变创建图像。3
repeating-linear-gradient()用重复的线性渐变创建图像。3
repeating-radial-gradient()类似 radial-gradient(),用重复的径向渐变创建图像。3
repeating-conic-gradient()重复的圆锥渐变。3
rgb()使用红®、绿(G)、蓝(B)三个颜色的叠加来生成各式各样的颜色。2
rgba()使用红®、绿(G)、蓝(B)、透明度(A)的叠加来生成各式各样的颜色。3
var()用于插入自定义的属性值。3

8. CSS 单位

  • CSS 有几个不同的单位用于表示长度
  • 一些设置 CSS 长度的属性有 width, margin, padding, font-size, border-width, 等
  • 长度有一个数字和单位组成如 10px, 2em, 等
  • 数字与单位之间不能出现空格;如果长度值为 0,则可以省略单位
  • 对于一些 CSS 属性,长度可以是负数
  • 有两种类型的长度单位:相对和绝对

浏览器支持

长度单位ChromeIEFirefoxSafariOpera
em, ex, %, px, cm, mm, in, pt, pc13113.5
ch2791720
rem493.64.111.6
vh, vw20919620
vmin209.0*19620
vmax26不支持19不支持20

注意: Internet Explorer 9 通过不标准的名称 vm 来支持 vmin ;

相对长度

相对长度单位指定了一个长度相对于另一个长度的属性;对于不同的设备相对长度更适用;

单位描述
em它是描述相对于应用在当前元素的字体尺寸,所以它也是相对长度单位。一般浏览器字体大小默认为16px,则2em == 32px;(自身存在字体大小设置时以自身为主,字体大小逐层复合会有连锁反应,不好调整)
ex依赖于英文字母小 x 的高度
ch数字 0 的宽度
remrem 是根 em(root em)的缩写,rem作用于非根元素时,相对于根元素字体大小;rem作用于根元素字体大小时,相对于其出初始字体大小。(除IE8即更早版本,均已支持)
vwviewpoint width,视窗宽度,1vw=视窗宽度的1%
vhviewpoint height,视窗高度,1vh=视窗高度的1%
vminvw和vh中较小的那个。
vmaxvw和vh中较大的那个。
%百分比

注意: rem与em有什么区别呢?区别在于使用rem为元素设定字体大小时,仍然是相对大小,但相对的只是HTML根元素;

绝对长度

绝对长度单位是一个固定的值,它反应一个真实的物理尺寸;绝对长度单位视输出介质而定,不依赖于环境(显示器、分辨率、操作系统等);

单位描述
cm厘米
mm毫米
in英寸 (1in = 96px = 2.54cm)
px像素 (1px = 1/96th of 1in)
ptpoint,大约1/72英寸; (1pt = 1/72in)
pcpica,大约 12pt,1/6英寸; (1pc = 12 pt)

备注: 像素或许被认为是最好的"设备像素",而这种像素长度和你在显示器上看到的文字屏幕像素无关;px实际上是一个按角度度量的单位;

9. 预处理器

CSS预处理器是一种专门的编程语言,用来为CSS增加一些编程特性(CSS本身不是编程语言)

CSS 预处理器主要目的

  • CSS语法不够强大(例如: CSS选择器无法进行嵌套,导致CSS中存在较多重复的选择器语句); CSS中无法定义变量以及没有合理的样式复用机制,导致整体CSS样式难以维护
  • 为了减少CSS代码冗余,为CSS提供样式复用机制,提高CSS代码的可维护性

CSS 预处理器工作流程

各种预处理器语法不一样,但最终工作流程是一样的

  • 以 Sass/Less/Styus 提供的语法规则编写样式代码
  • 经过编译器把 Sass/Less/Styus 编写的代码转换成标准的CSS代码
  • 浏览器加载解析转换后的CSS样式(浏览器只能解析标准的CSS代码,而不能是 Sass/Less/Styus 等)

Scss、Sass

2007年诞生,最早最成熟的CSS预处理器,有两种语法,分别以 .sass 和 .scss 为扩展名. SCSS 是 Sass3 引入的新语法,完全兼容 CSS3,并继承了 Sass 的强大功能,和 CSS 语法结构更接近

Less

2009年诞生,受Sass影响大,以 .less 为扩展名

Stylus

2010年诞生,来自Node.js社区,主要用来给Node项目进行CSS预处理支持,以 .styl 为扩展名

10. CSS 布局方案

水平垂直居中

1. text-align + line-height
.layout {
  text-align: center;
  line-height: height;
}

2. position + 负margin
.layout {
  position: relative;
  .content {
    position: absolute;
    left: 50%;
    top: 50%;
      margin-top: -50%;
       margin-left: -50%;
  }
}

3. position + transform
.layout {
  position: relative;
  .content {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
  }
}

4. position + margin:auto
.layout {
  position: relative;
  .content {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    margin: auto;
  }
}

5. display: table-cell
.layout{
  display: table-cell;
  vertical-align: middle;
  text-align: center;
  .content {
      display: inline-block
  }
}

6. display: flex
layout {
  display: flex;
  justify-content: center;
  align-items: center;
}

单列布局

特征:定宽、水平居中

1. 全等宽,自适应

原理说明:对header、content、footer统一设置width或max-width,并通过margin:auto实现居中

/* HTML */ 
<div class="layout">
  <div id="header">头部</div>
  <div id="content">内容</div>
  <div id="footer">尾部</div>
</div>

/* less */
.layout {
  /*   width: 1200px; */
  /*设置width当浏览器窗口宽度小于1200px时,单列布局不会自适应;*/
  max-width: 1200px;
  margin: 0 auto;
}

2. 头、尾全等宽,内容自适应

原理说明:header、footer的内容宽度为100%,但header、footer的内容区以及content统一设置width 或 max-width,并通过margin:auto实现居中

/* HTML */ 
<div id="header">
  <div class="layout">头部</div>
</div>

<div id="content" class="layout">内容</div>

<div id="footer">
  <div class="layout">尾部</div>
</div>
/* less */
.layout {
    /*   width: 1200px; */
    /*设置width当浏览器窗口宽度小于1200px时,单列布局不会自适应;*/
  max-width: 1200px;
  margin: 0 auto;
}

双列&三列布局

二列布局的特征是侧栏固定宽度,主栏自适应宽度

三列布局的特征是两侧两列固定宽度,中间列自适应宽度

1. float+(margin / overflow: hidden)

原理说明:设置两个侧栏分别向左向右浮动,中间列通过外边距给两个侧栏腾出空间,中间列的宽度根据浏览器窗口自适应

/* HTML */ 
<div id="content">
  <div class="sub">sub</div>
  <div class="extra">extra</div>
  <div class="main">main</div>
</div>

/* less */
.sub{
  width: 100px;
  float: left;
}
.extra{
  width: 200px;
  float: right;
}
.main{
  margin-left: 100px; 
  margin-right: 200px;
  // overfrow: hidden;
}

一些说明:

  • 注意DOM文档的书写顺序,先写两侧栏,再写主面板,更换后则侧栏会被挤到下一列(圣杯布局和双飞翼布局都会用到);
  • 这种布局方式比较简单明了,但缺点是渲染时先渲染了侧边栏,而不是比较重要的主面板

二列的实现方法
如果是左边带有侧栏的二栏布局,则去掉右侧栏,不要设置主面板的margin-right值,其他操作相同;反之亦然

2. position+margin

原理说明:设置两个侧栏分别向左向右定位,中间列通过外边距给两个侧栏腾出空间,中间列的宽度根据浏览器窗口自适应

/* HTML */ 
<div class="sub">left</div>
<div class="main">main</div>
<div class="extra">right</div>

/* less */
.sub, .extra {
  position: absolute;
  top: 0; 
  width: 200px;
}
.sub { 
  left: 0;
}
.extra { 
  right: 0; 
}
.main { 
  margin: 0 200px;
}

一些说明:

  • 本方法不限制DOM书写顺序,先写主面板会使主面板部分优先渲染(一般主面板会比侧栏内容重要)
  • 与上一种方法相比,本种方法是通过定位来实现侧栏的位置固定
  • 如果中间栏含有最小宽度限制,或是含有宽度的内部元素,则浏览器窗口小到一定程度,主面板与侧栏会发生重叠

二列的实现方法
如果是左边带有侧栏的二栏布局,则去掉右侧栏,不要设置主面板的margin-right值,其他操作相同;反之亦然

3. 圣杯布局(float + 负margin)

原理说明:
主面板设置宽度为100%,主面板与两个侧栏都设置浮动,常见为左浮动,这时两个侧栏会被主面板挤下去;通过负边距将浮动的侧栏拉上来,左侧栏的负边距为100%,刚好是窗口的宽度,因此会从主面板下面的左边跑到与主面板对齐的左边,右侧栏此时浮动在主面板下面的左边,设置负边距为负的自身宽度刚好浮动到主面板对齐的右边;为了避免侧栏遮挡主面板内容,父元素设置左右padding值为左右侧栏的宽度,给侧栏腾出空间,此时主面板的宽度减小;由于侧栏的负margin都是相对主面板的,两个侧栏并不会像我们理想中的停靠在左右两边,而是跟着缩小的主面板一起向中间靠拢;此时使用相对布局,调整两个侧栏到相应的位置
布局步骤:

  1. 三者都设置向左浮动
  2. 设置main宽度为100%,设置两侧栏的宽度
  3. 设置 负边距,sub设置负左边距为100%,extra设置负左边距为负的自身宽度
  4. 设置父元素的padding值给左右两个子面板留出空间
  5. 设置两个子面板为相对定位,sub的left值为负的sub宽度,extra的right值为负的extra宽度
/* HTML */ 
<div id="bd">         
  <div class="main"></div>        
  <div class="sub"></div>        
  <div class="extra"></div>  
</div>

/* less */
#bd {
  padding: 0 230px 0 190px;

  .main {
    float: left;
    width: 100%;
  }

  .sub {
    float: left;
    width: 190px;
    margin-left: -100%;
    position: relative;
    left: -190px;
  }

  .extra {
    float: left;
    width: 230px;
    margin-left: -230px;
    position: relative;
    right: -230px;
  }
}

一些说明

  • DOM元素的书写顺序不得更改
  • 主面板部分优先渲染(一般主面板会比侧栏内容重要)
  • 当面板的main内容部分比两边的子面板宽度小的时候,布局就会乱掉;可以通过设置main的min-width属性或使用双飞翼布局避免问题

二列的实现方法
如果是左边带有侧栏的二栏布局,则去掉右侧栏,不要设置主面板的padding-right值,其他操作相同;反之亦然

4. 双飞翼布局( float + 负margin )

原理说明:
双飞翼布局和圣杯布局的思想有些相似,都利用了浮动和负边距,但双飞翼布局在圣杯布局上做了改进,在main元素上加了一层div, 并设置margin,由于两侧栏的负边距都是相对于main-wrap而言,main的margin值变化便不会影响两个侧栏,因此省掉了对两侧栏设置相对布局的步骤
布局步骤:

  1. 三者都设置向左浮动
  2. 设置main-wrap宽度为100%,设置两个侧栏的宽度
  3. 设置 负边距,sub设置负左边距为100%,extra设置负左边距为负的自身宽度
  4. 设置main的margin值给左右两个子面板留出空间
/* HTML */ 
<div class="main-wrap">
  <div class="main">#main</div>
</div>
<div class="sub"></div>        
<div class="extra"></div>

/* less */
.main-wrap {
  float: left;
  width: 100%;

  .main {
    margin: 0 230px 0 190px;
  }
}

.sub {
  float: left;
  width: 190px;
  margin-left: -100%;
}

.extra {
  float: left;
  width: 230px;
  margin-left: -230px;
}

一些说明

  • 主面板部分优先渲染(一般主面板会比侧栏内容重要)
  • 圣杯采用的是padding,而双飞翼采用的margin,解决了圣杯布局main的最小宽度不能小于左侧栏的缺点
  • 双飞翼布局不用设置相对布局,以及对应的left和right值
  • 通过引入相对布局,可以实现三栏布局的各种组合,例如对右侧栏设置position: relative; left: 190px;,可以实现sub+extra+main的布局(元素移出返回)

二列的实现方法
如果是左边带有侧栏的二栏布局,则去掉右侧栏,不要设置main-wrap的margin-right值,其他操作相同;反之亦然

HTML and CSS 特性要点


HTML5 新特性

  1. 拖拽释放: (Drap and drop) API ondrop,拖放是一种常见的特性,即抓取对象以后拖到另一个位置;在HTML5中,拖放是标准的一部分,任何元素都能够拖放
  2. 自定义属性: data-id
  3. 语义化标签: header, nav, footer, aside, article, section, main
  4. 音 / 视频: audio / video
  5. 画布: Canvas
  6. 地理: (Geolocation) API其实Geolocation 就是用来获取到当前设备的经纬度(位置)
  7. localStorage: 本地离线存储,用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动删除
  8. sessionStorage: 该数据对象临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据
  9. 新增表单控件: search,color,range,date,time,datetime-local,url,email,number,tel
  10. 新的技术: web worker(为 Web 内容在后台线程中运行脚本提供了一种简单的方法),web socket(提供了用于创建和管理 WebSocket 连接,以及可以通过该连接发送和接收数据的 API),Geolocation(获取设备地理位置的可编程的对象)

CSS3 新特性

  1. 新增颜色模式: RGBA,HSLA
  2. 文字阴影:text-shadow
  3. 边框:圆角边框(border-radius);边框阴影(box-shadow);图片边框(border-image)
  4. 盒子模型:box-sizing
  5. 背景:background-size background-origin background-clip
  6. 渐变:linear-gradient , radial-gradient
  7. 过渡:transition,可实现属性的渐变
  8. 自定义动画: animate @keyfrom
  9. 媒体查询: 多栏布局@media screen and (width:800px) (…)
  10. 2D 转换/3D 转换:transform: translate (x, y) rotate (x, y) skew (x, y) scale (x, y)
  11. 字体图标:iconfont/icomoon
  12. 弹性布局:flex布局
  13. 网格布局:Grid布局

Canvas和SVG的区别是什么

Canvas

Canvas 通过 JavaScript 来绘制 2D 图形。
Canvas 是逐像素进行渲染的。
在 canvas 中,一旦图形被绘制完成,它就不会继续得到浏览器的关注。如果其位置发生变化,那么整个场景也需要重新绘制,包括任何或许已被图形覆盖的对象。

SVG

SVG 是一种使用 XML 描述 2D 图形的语言。
SVG 基于 XML,这意味着 SVG DOM 中的每个元素都是可用的。您可以为某个元素附加 JavaScript 事件处理器。
在 SVG 中,每个被绘制的图形均被视为对象。如果 SVG 对象的属性发生变化,那么浏览器能够自动重现图形。

Canvas 与 SVG 的比较

Canvas
  • 依赖分辨率
  • 不支持事件处理器
  • 弱的文本渲染能力
  • 能够以 .png 或 .jpg 格式保存结果图像
  • 最适合图像密集型的游戏,其中的许多对象会被频繁重绘
SVG
  • 不依赖分辨率
  • 支持事件处理器
  • 最适合带有大型渲染区域的应用程序(比如谷歌地图)
  • 复杂度高会减慢渲染速度(任何过度使用 DOM 的应用都不快)
  • 不适合游戏应用

位图跟矢量图的区别

位图

位图图像也称为点阵图像,位图使用我们称为像素的一格一格的小点来描述图像

矢量图

矢量图是根据几何特性来绘制图形,是用线段和曲线描述图像,矢量可以是一个点或一条线,矢量图只能靠软件生成,矢量图文件占用内在空间较小,因为这种类型的图像文件包含独立的分离图像,可以自由无限制的重新组合

区别
  • 矢量图形与分辨率无关,可以将它缩放到任意大小和以任意分辨率在输出设备上打印出来,都不会影响清晰度
  • 而位图是由一个一个像素点产生,当放大图像时,像素点也放大了,但每个像素点表示的颜色是单一的,所以在位图放大后就会出现咱们平时所见到的马赛克状。

浏览器兼容性前缀

-moz-: 代表firefox浏览器私有属性
-ms-: 代表IE浏览器私有属性
-webkit-: 代表chrome、safari私有属性
-o-: 代表opera私有属性

优雅降级,渐进增强

优雅降级和渐进增强印象中是随着CSS3流出来的一个概念;由于低级浏览器不支持CSS3,但CSS3 的效果又太优秀不忍放弃,所以在高级浏览中使用CSS3 而低级浏览器只保证最基本的功能;关键的区别是他们所侧重的内容,以及这种不同造成的工作流程的差异
“优雅降级”观点认为应该针对那些最高级、最完善的浏览器来设计网站,后续针对兼容问题进行设置
“渐进增强”观点则认为应关注于内容本身,先针对兼容问题进行设置,后续再应用高级功能

响应式设计

网页内容自动适配屏幕

  1. 媒体查询方案
  2. 百分比 方案
  3. VH/VW 方案
  4. rem 方案

媒体查询

CSS3 中的增加了更多的媒体查询,就像if条件表达式一样,可以设置不同类型的媒体条件,并根据对应的条件,给相应符合条件的媒体调用相对应的样式表使用@Media查询,可以针对不同的媒体类型定义不同的样式,通过媒体查询,可以通过给不同分辨率的设备编写不同的样式来实现响应式的布局,比如为不同分辨率的屏幕,设置不同的背景图片比如给小屏幕手机设置@2x图,为大屏幕手机设置@3x图,通过媒体查询就能很方便的实现

@media screen and (max-width: 1920px) { ... }
// 设置更多条件
@media screen (min-width: 375px) and (max-width: 600px) {
  body {
    font-size: 18px
  }
}

readonly 和 disabled 的区别

  1. 两个属性都可以作用于input等表单元素上,都使得元素成为“不可用”的状态;
  2. 两者的字面意义
  • readonly表示“只读”,一般表示对于文字内容只读,即不可更改内容,对于非文字的表单“只读”与“不只读”似乎没有啥区别;
  • disabled表示“使残废,使无效”,都残废了,不管是什么内容,都是无效的。(禁用)

HTML and CSS 实现方案


rem 适配方案

1. 通用方案

  1. 设置根font-size: 625%(或其它自定的值,但换算规则1rem不能小于12px)
  2. 通过媒体查询分别设置每个屏幕的根font-size
  3. CSS直接除以2再除以100即可换算为rem

优点: 有一定适用性,换算也较为简单
缺点: 有兼容性的坑,对不同手机适配不是非常精准;需要设置多个媒体查询来适应不同手机,单某款手机尺寸不在设置范围之内,会导致无法适配

2. 手淘方案

  1. 拿到设计稿除以10,得到font-size基准值
  2. 引入flexible
  3. 不要设置meta的viewport缩放值
  4. 设计稿px/ font-size基准值,即可换算为rem
@rootSize: 37.5rem; // 设计稿 / 10
(10 / @rootSize) // px / 基准值

优点: 通过动态根font-size、viewpor、dpr来做适配,无兼容性问题,适配精准
缺点: 需要根据设计稿进行基准值换算,在不使用编辑器插件开发时,单位计算复杂

清除浮动

元素浮动脱标后,无法撑起父元素的高度,影响父元素的布局
与浮动元素同级的非浮动元素(内联元素)会跟随其后,影响布局

1. clear: both 方案

.block { // 在盒子布局的尾部放置一个块级元素,设置不允许两侧有浮动元素
  clear: both;
}

2. 伪元素清除浮动方案

.clearfix:after {
  content: "."; // 伪元素必写,添加内容为兼容写法
  display: block; // 设置块级元素以设置清除浮动属性
  visibility: hidden; // 隐藏元素
  height: 0; // 高度为0,不显示此元素
  clear: both; // 清除浮动
}
/* for IE */
.clearfix{
  *zoom: 1; // 兼容IE
}

注意: 也可以给父级元素设置overflow: hidden;或overflow: auto;清除浮动方案本质上是将同一个BFC中的两个元素隔开

CSS画三角形

  1. border是由三角形组合而成的
  2. 如果想要其中一个,只需要把另外三个的颜色都设为 transparent(透明)
  3. 不过其他隐藏的左边框依然占据着空间,如果不想要,可以把右边框的 border-width 设为 0
/* HTML */ 
div {
    width:0;
    height:0;
    border-style: solid;
    border-width: 40px 0px 40px 40px;
    border-color: transparent transparent transparent red;
}

效果如下:

小于1px的边框

1. 渐变方案(效果较好)

.layout {
  position: relative;
  .layout::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 1px;
    background-image: linear-gradient(0deg, transparent 50%, #000 50%); // 0 edg 向↑ 90edg 向→;-webkit 原理实现 为 90edg 向↑,0 edg 向→
  }
}

2. 缩放方案

.layout {
  position: relative;
  .layout::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 1px;
    background-color: #000; // border-top: 1px solid #000;
    transform: scaleY(0.5);
  }
}

3. 缩放方案加强版(四边)

.layout {
  position: relative;
  .layout::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 200%;
    height: 200%;
    border: 1px solid #000;
    transform-origin: 0 0; // 缩放定位设置为左上角
    transform: scale(0.5, 0.5);
  }
}

4. 边框阴影(最简便)

.layout {
    box-shadow: 0 0 1px 1px #000 inset;
}

小于12px的字体

利用缩放将字体显示缩小,但又因为缩放会针对所有显示进行控制,所以设置时针对需要小于12px的字体标签进行特定包裹设置即可

.layout {
  display: inline-block; // 行内块,不影响布局
  transform: scale(0.8); // 10px
}

文本溢出显示

1. 单行文本溢出显示

.layout { // 前置条件: 设置宽度
  white-space: nowrap; // 是否折行
  overflow: hidden; // 溢出隐藏
  text-overflow: ellipsis; // 文本溢出部分以省略号代替
}

2. 多行文本溢出显示

.layout {
  overflow: hidden; // 溢出隐藏
  text-overflow: ellipsis; // 文本溢出部分以省略号代替
  display: -webkit-box; // 将对象作为弹性伸缩盒子模型显示
  -webkit-line-clamp: 4; // 控制最多显示几行
  -webkit-box-orient: vertical; // 设置伸缩盒对象子元素的排列方式
}

精灵图(雪碧图)

background-position:x,y;(X和Y一般都取负值)把图片背景移动到自己需要的位置

Delta机器人:运动学正反解分析 Delta机器人:运动学正反解分析 一、Delta机构简介 Delta机构是并联机构中的一种典型机构,起原始结构如图1所示。Delta机构由R.Clavel 博士在 1985年发明,是现在并联机器人中使用最多的一种,具备了并联机构所特有的优点,负载能力强、效率高、末端执行器精度高、运动惯性小,可以高速稳定运动等。因此在机器人领域获得了越来越广泛的应用。以实现高速、精准、高效的运动。           &n 阅读详情

相关推荐

从Oracle迁移数据到Hadoop

目标:把Oracle 下的数据文件迁移到 Hadoop , 数据表都是上亿条,每个数据表的空间都超过100G。 关键是建立数据文件是UTF8格式,这样数据中的汉字在Hadoop 里显示才正常。 平台:CentOS 6.10 工具:Python 2.7 cx_Oracle 库 Oracle10.2.0.4.0 Hadoop 2.7.2-transwarp-5.2.1 1. 查看表...

预则立 4233

HTML, CSS, and Javascript for Web Developers Week1

HTML, CSS, and Javascript for Web Developers Week1 重要概念 HTML:Hypertext Markup Language,其中Hypertext指的是带有链接转向其他页面的文本,markup指的是有标签

qq_34034442的博客 270

【阿里云大模型高级工程师ACP习题集】2.4 自动化评测答疑机器人的表现(⭐️⭐️⭐️ 重点章节!!!)

【摘要】这是我精心整理出对应的习题集,里面足足有 30 道题目,从基础概念到深度拓展,全方位覆盖章节重点、难点。不管你是想检验自己的学习成果,还是想针对薄弱环节进行强化训练,它都能完美适配!

davidkorhenn的博客 2477

《Head First HTML and CSS 》学习笔记——1、Web语言

认识HTML 超文本标记语言(HyperText Markup Language),简称HTML。 目录认识HTMLWeb工作流程Web服务器能做什么Web浏览器能做什么从Head First Lounge 学到的未完待续.... Web工作流程 要建立Web页面,需要创建HTML文件,把他们放在一个Web服务器上 一旦把文件放在Web服务器上,任何浏览器就能通过互联网得到你的Web页面 Web服务器能做什么 每个服务器会存储HTML文件、图像、声音和其他类型的文件 服务器就是一个连接到互联网的计

Wzw的博客 352

基于 Datawhale 开源量化投资学习指南(10):基于 LightGBM 的量化选股

通过本篇文章,我们深入探索了如何运用 LightGBM 机器学习模型实现量化选股。首先,我们通过获取股票的历史数据,进行特征工程和标签制作,将选股问题转化为一个分类问题。接着,我们使用 LightGBM 训练模型,并在验证集和测试集中评估了模型的表现。该选股策略的核心在于结合机器学习算法,从历史数据中寻找能够捕捉股票短期涨跌的关键特征,从而为投资者提供辅助决策支持。虽然本文的模型取得了一定的效果,但这只是量化投资领域的一小部分。

不想宅的冷同学 1346

单机多环境部署apollo 2.3.0

理解apollo的整体架构后,对比nacos配置中心功能点,其设计的复杂度以及完整度相较nacos而言更为丰富 对于不同的环境,例如 FAT, PRO 在部署时进程已经完全物理隔离,并且每个环境config/adminservice依赖的数据也完全物理隔离(连接不同的db),在数据隔离与安全方面做的很完善,但同时也提升了架构的复杂度 而 portal 可以管理多个环境,单节点部署虽然有单点问题,但并不会影响业务从configservice读取配置, 挂掉只要重启就可以,只是在

Life is a starting point everywhere 1299

Head first html and css学习笔记1

Head first html and css学习笔记1 《head first for html and css》这本书简直是宝藏啊。之前买就是因为网上有很多人推荐,拿回来以后发现书特别厚,虽然讲的很生动,仔细,但是感觉会比较花费时间,打算先去看视频的,今天心血来潮看了一下,讲的不要太好,尤其是HTML和CSS拟人化的对话太有趣了。总结一下,CSS存在的必要性和意义,CSS和HTML是两种完全不同的语音, CSS能在不改变HTML的结构的前提下,设置页面的布局和样式,让页面更具有可读性,毕竟人可是视觉动物

KelseyLin的博客 264

使用buildroot系统的qmake编译QT出现Unknown module(s) in QT: xxxx 的错误解决方法

可以看到,我这里使用的是 qt5base-5.15.2 目录下的qmake,这个qmake只包含了基础的qt模块,而额外添加的qt模块没有包含进去,需要使用。可以看到我这里是有的,如果你跟我一样,模块存在,但是还是报找不到对应模块的错误的话,大概率是跟我一样,用错qmake了,看第二点。在包含 qt5base 目录下查看,是否有对应模块的目录,如果没有的话,需要通过make menuconfig 添加一下。目录下的qmake才可以。

T541132的博客 2489

html and css-task1

学习方式:自主学习 学习导引:百度前端技术学院 学习目标:零基础HTML及CSS编码 学习收获:HTML5新标签,将具有导航性质的标签放在一块,使代码结构在语义化方面更加准确,同时对于屏幕阅读器等设备的支持也更好。                   HTML5新标签,定义文档中的节(section、区段)。比如章节、页眉、页脚或文档中的其他部分。                   标

hai_rou的博客 309

手把手教你学GPU的KMD专栏--3.1 设备初始化流程深度解析

本文深入解析了KMD(内核模式驱动)设备初始化流程,这是GPU驱动开发最基础且关键的环节。初始化流程包括6个核心阶段:KMD模块加载、PCIe设备探测匹配、GPU硬件初始化、显存分配映射、中断系统配置和设备注册。每个阶段都有详细步骤解析,涉及关键数据结构和错误处理机制。文章还分析了常见问题(驱动加载失败、显存分配失败、中断配置失败)的解决方案,并指出未来趋势将向动态初始化、安全增强和AI优化方向发展。正确高效的初始化流程是确保GPU被操作系统安全使用的前提,也是后续内存管理、任务调度等功能的基础。

MHD0815的博客 262

需求跟踪详解

需求跟踪是指在软件项目开发过程中,建立并维护需求与项目各阶段工作产物(如设计文档、代码模块、测试用例等)之间对应关系的过程。它不仅记录需求从提出到实现的完整路径,还能反映需求变更时对各阶段工作的影响范围,是连接用户期望与实际软件开发产出的桥梁。

跟佟格湾一起学习计算机知识吧~ 1422

Head First HTML and CSS 2nd - Chapter1 Reading Notes

That's where the HTML comes in.The HTML tells the broswer all about the content and structure of the page we want to display.The "ML" in "HTML" means "Mark up Language" ,which give you a way to "mark up" your text with tags that tell the braswer how your

weixin_74045659的博客 732

第3.4章 机器人第三方库实战总结(四):G2O优化库从入门到实战(附SLAM实例代码)

自定义边同样是满足复杂应用需求的重要手段。自定义边时,需要明确边所连接的顶点类型以及边所表示的误差项的计算方式。假设我们要定义一条边,用于约束两个上述自定义顶点之间的相对位姿和传感器偏移量关系。我们可以这样定义边类:public:// 计算误差// 计算雅可比矩阵// 读盘和存盘函数,这里暂不实现。

行知SLAM 358

Head first HTML and CSS 总结-1.HTML简介

Head first HTML and CSS 总结-1.HTML简介 编写静态Web用到的语言拆分介绍如下图: HTML由若干个元素组成,元素=开始标记+内容+结束标记(有些元素无结束标记) html元素包含head元素和body元素 head元素包围网页信息,body元素包围浏览器显示的信息 CSS由若干个规则组成。

你不要担心 381

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Head First HTML and CSS学习chapter 1(1)

正式开始学习Web开发的第二天,以下是一些小错误和需要注意的东西。1. HTML标签应成对出现,第一次edit html就漏写了&lt;/html&gt;,虽然并未影响页面。2. CSS样式中background-color漏写“-”,导致背景颜色没有出现,看来以后要用心细心才行。3. padding中四个数值的顺序不太明白,上网查了一下,顺序是上右下左。总共有四种可能的情况,举例来说就是:(1)...

weixin_41880592的博客 130

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

ESP32芯片与模组选型实战:量产避坑指南

SoC(片上系统)和模组是嵌入式无线开发中最基础也最易混淆的两类硬件形态。SoC作为裸芯片,提供最高设计自由度但需承担射频匹配、电源管理、EMC认证等全链路工程风险;模组则是预认证、预调优的一体化解决方案,直接决定量产良率、认证周期与BOM成本。理解二者在物理封装、合规性、供应链属性上的本质差异,是规避Wi-Fi信号弱、OTA升级失败、深度睡眠唤醒失灵等高频问题的前提。尤其在ESP32生态中,‘WROOM’‘WROVER’‘MINI’等模组前缀与后缀组合隐含Flash容量、PSRAM配置、天线类型等关键信息

weixin_34226706的博客 435

CSS AND HTML(1)

DOM模型(document object model):将文档中的元素作为object 来使用,操作元素的属性。   1,访问和改变已有元素的属性。   DOM中访问元素:var nu=document.getElementsByTagName("元素类型名:ul、li、tds")。            nu[0].getElementsByTagName("li") ul下的多个...

weixin_30610755的博客 75

Test Suites for CSS 2.1, ARIA, and HTML5

原文:http://nate.koechley.com/blog/2009/01/27/test-suites-for-css-21-aria-and-html5/一组对css2.1和ARIA以及HTML5的测试几个小时以前Microsoft发布一个惊人的资源,它能给整个前端工程师带来帮助。那就是他们的IE8发布了,而且Ie8发布经历过了7005次测试,这其中包含了在其它主流浏览器上都没有通过

927

How to Create A Website An HTML Tutorial and CSS Tutorial PART 1 by Todd McLeod

https://en.wikipedia.org/wiki/List_of_HTTP_status_codes When using chrome browser, click CTRL + T launches a new tab. https://whatwebcando.today/ Seven Habits of Highly Effective People Get in fro...

CodingIsFun 396

The language of the web --Head First into HTML and CSS Chapter 1

1. Web servers have a full-time job on the Internet, tirelessly waiting for requests from web browsers. What kinds of requests?  Requests for web pages, images, sounds, or maybe even a video. When a

samantha_wang的专栏 485

初读《Beginning HTML with CSS and XHTML》原英文书

晚上,翻阅了Apress《Beginning HTML with CSS and XHTML : Modern Guide and Reference》 被书皮上这一句话吸引了:学会如何构建现代、符合标准、不杂乱的HTML和CSS网站。 Apress 的这类书中,Beginning是写给初学入门读者的,Pro是写给专业人员的。 这本书与《(X)HTML权威指南》一样是参...

dieya9669的博客 209

Microsoft Visual Studio 2010 支持html5和css3的补丁包

Web Standards Update for Microsoft Visual Studio 2010 SP1 http://visualstudiogallery.msdn.microsoft.com/a15c3ce9-f58f-42b7-8668-53f6cdc2cd83 Update June 3, 2012.Update to the latest CSS 3 schemaev...

weixin_34242331的博客 112

HTML and CSS

HTML CSS JavaScript HTML 本周主要讲讲一个网页的制作。一个网页的制作很简单,只需通过不同的标签,在不同定义的标签中输入对应的内容便可以得到一个简陋的网页,没错,是一个很简陋的网页。就比如我需要写一段话在网页中: &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta...

just1done的博客 223

个人HTML、CSS综合

关于HTML:是用于开发网页的一门语言。(如建造房子时所用到的砖块) 关于CSS:用于美化、渲染网页的一门语言。( 如装修房子时用到的石灰、油漆等涂料) 一、HTML概述 1.HTML是什么? HTML全称是:(Hyper Text Markup Language)超文本标记语言,其实就是用于开发网页的一门语言。 理解什么是超文本:超文本可以理解为超级文本、超过文本(可以通过HTML传输各种格式的数据) 2.关于HTML? (1)HTML本质上是...

qq_51049931的博客 1164

HTML and CSS Support HTML 和 CSS 支持

在控件中的每个项显示在屏幕上之前,这些事件都会触发该事件。它们允许您访问将要呈现的单个 HTML 元素,并自定义其可见性和样式设置。

龙七 863

Head First HTML and CSS

《Head First HTML and CSS》是一本html和css入门级的书,知识点很全,风趣幽默。下面是我的读书笔记。 一、Web语言:认识HTML 1、Web服务器 Web浏览器 2、浏览器会忽略HTML文档中的制表符、回车和大部分空格。它们会根据你的标记来确定在哪里换行或分段。 3、HTML的注释<!-- --> 4、<html&gt...

lucky_jiexia的博客 1999

HTML and CSS 初探

提示:这是一个非常弱智的前端学习者的一点追求弱智简单清晰的傻瓜笔记,一个经常打完代码打辩论的某弗雷尔卓德寒冷211高校的天天想家的孩子的“胡说八道”。这是第一节——基础与引入。

hhyyzz4121的博客 1386
上一篇: Qt5 互动地图,实现无人机地面站效果
下一篇: 2 ECMAScript
taciturn丶
博客等级 码龄9年 471粉丝 33原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

taciturn丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值