HTML&CSS学习笔记

开发前的准备

  • 环境搭建:推荐IDEA
  • 常见问题解决
    • 寻求问题根源
    • 查看参考文档
    • 参考示例
    • 搜素引擎
    • 问题反馈
  • 掌握技能需求
    • HTML5
    • XHTML
    • CSS3
    • JS
    • jQuery
  • 快捷键(在IDEA下使用eclipse for mac os x (在keymap设置))
    • 快捷提示:alt+/
    • 快捷注释:command+/
    • 代码上移下移:alt+up/down
    • 快速复制:Alt+command+下:快速向下复制
    • 删除一行:command+d

HTML5

标记语言

集成开发环境IDEA

  • 创建工程:crate new—>Static Web—>Static Web—>next
  • 名称:Hello 目录:XXX/Hello
  • 运行:鼠标移到右上角,选择浏览器,即可运行

基础讲解

  • !DOCTYPE html:版本声明。浏览器必须知道你所使用的确切的HTML的版本才能正确显示,这条语句是HTML5的声明,其他较复杂
  • head:定义编码格式、标题、文字显示语言等等
  • body:页面主要内容以及其他标签
1
2
3
4
5
6
7
8
9
10
<b>定义粗体文本</b><br/>
<big>定义大号字体</big><br/>
<em>定义着重文字</em><br/>
<i>定义斜体字</i><br/>
<strong>加重语气</strong><br/>
大家好<sup>这是上标</sup>上标演示<br/>
大家好<sub>我是下标</sub>下标演示<br/>
<ins>插入字</ins><br/>
<del>删除字</del><br/>

HTML5的样式、链接、和表格

  • 三种样式表的插入方法
    • 外部样式表
    • 内部样式表
    • 内链样式表
  • 链接
    • 文本链接
    • 图片链接
1
2
3
4
5
6
7
<a href="http://www.baidu.com">我是一个链接标签</a>
<a href="http://www.badu.com">
<img src="images/1.jpg" width="100ps" height="100ps" alt="html5logo">
</a>
<a name="tips">hello</a><br>
<a href="#tips">跳转到hello</a>
  • name表示文档内链接,比如论文中点击上标就会跳转到文档最后的尾注参考文献(例如百度百科)

HTML5列表、块、布局

  • 列表

HTML表单提交和php环境搭建

  • 表单:用于获取不同类型的用户的输入

    • 复选框
    • 单选按钮
    • 下拉列表
    • 文本域
    • 创建按钮
  • PHP环境搭建

HTML5框架、背景和实体

  • 框架
    • 框架标签
    • 内联框架
      (好玩,就是网页嵌套别的网页)
  • 背景

    • background
    • bgcolor
  • 实体

    • HTML中预留字符串必须被替换成字符实体
    • < 、&等等符号是预留符号
    • 用的时候搜索即可

XHTML的使用规范

  • 什么是XHTML
    是可扩展超文本标记语言
  • 为什么使用XHTML
    为了代码的完整性和良好性
  • 文档声明
    DTD:规定了使用通用标记语言的网页语法
    • 严格类型
    • 过度类型
    • 框架类型
  • 语法
    • 元素必须正确嵌套
    • 元素必须始终关闭
    • 元素必须小写
    • 文档必须有一个根元素
  • XHTML属性
    • 属性必须小写
    • 属性必须用引号包围
    • 属性最小化也是禁止的

CSS样式

  • css 样式由选择符和声明组成,而声明又由属性和值组成
    • 选择符:又称选择器,指明网页中要应用样式规则的元素,如本例中是网页中所有的段(p)的文字将变成蓝色,而其他的元素(如ol)不会受到影响。
    • 声明:在英文大括号“{}”中的的就是声明,属性和值之间用英文冒号“:”分隔。当有多条声明时,中间可以英文分号“;”分隔

CSS样式的分类

内联式

1
2
3
<body>
<p>慕课网,<span style="color:blue">超酷的互联网</span>、IT技术免费学习平台,创新的网络一站式学习、实践体验;<span>服务及时贴心</span>,内容专业、<span>有趣易学</span>。专注服务互联网工程师快速成为技术高手!</p>
</body>

嵌入式

1
2
3
4
5
6
7
8
9
10
<style type="text/css">
span{
color:blue;
}
</style>
</head>
<body>
<p>慕课网,<span>超酷的互联网</span>、IT技术免费学习平台,创新的网络一站式学习、实践体验;<span>服务及时贴心</span>,内容专业、<span>有趣易学</span>。专注服务互联网工程师快速成为技术高手!</p>
</body>
</html>

外部式

外部式css样式(也可称为外联式)就是把css代码写一个单独的外部文件中,这个css样式文件以“.css”为扩展名,在内(不是在代码的前面(实际开发中也是这么写的)。感兴趣的小伙伴可以试一下,把它们调换顺序,则会变化

  • 总结来说,就是—就近原则(离被设置元素越近优先级别越高)
  • 上面所总结的优先级是有一个前提:内联式、嵌入式、外部式样式表中css样式是在的相同权值的情况下
  • CSS选择器

    什么是选择器

    每一条css样式声明(定义)由两部分组成,形式如下:

    选择器{
    样式;
    }
    在{}之前的部分就是“选择器”,“选择器”指明了{}中的“样式”的作用对象,也就是“样式”作用于网页中的哪些元素。比如右侧代码编辑器中第7行代码中的“body”就是选择器。

    选择器的分类

    • 标签选择器
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <style type="text/css">
    h1{
    font-weight:normal;
    color:red;
    }
    </style>
    </head>
    <body>
    <h1>勇气</h1>
    • 类选择器(最常用)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <style type="text/css">
    .stress{
    color:red;
    }
    .myclass{
    color:green;
    }
    </style>
    </head>
    <body>
    <h1>勇气</h1>
    <p>三年级时,我还是一个<span class="stress">胆小如鼠</span>的小女孩,上课从来不敢回答老师提出的问题,生怕回答错了老师会批评我。就一直没有这个<span class="stress">勇气</span>来回答老师提出的问题。学校举办的活动我也没勇气参加。</p>
    <p>到了三年级下学期时,我们班上了一节<span class="myclass">公开课</span>,老师提出了一个很简单的问题,班里很多同学都举手了,甚至成绩比我差很多的,也举手了,还说着:<span class="myclass">"我来,我来。</span>"我环顾了四周,就我没有举手。</p>
    • ID选择器(类似类选择器)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <style type="text/css">
    #stress{
    color:red;
    }
    #setGreen{
    color:green;
    }
    </style>
    </head>
    <body>
    <h1>勇气</h1>
    <p>三年级时,我还是一个<span id="stress">胆小如鼠</span>的小女孩,上课从来不敢回答老师提出的问题,生怕回答错了老师会批评我。<span id="setGreen">就一直</span>没有这个勇气来回答老师提出的问题。学校举办的活动我也没勇气参加。</p>
    • 类选择器和id选择器的区别
       - ID选择器只能在文档中使用一次。与类选择器不同,在一个HTML文档中,ID选择器只能使用一次,而且仅一次。而类选择器可以使用多次。
       - 可以使用类选择器词列表方法为一个元素同时设置多个样式。我们可以为一个元素同时设多个样式,但只可以用类选择器的方法实现,ID选择器是不可以的(不能使用 ID 词列表)。
      
    • 子选择器
      即大于符号(>),用于选择指定标签元素的第一代子元素。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    .food>li{border:1px solid red;}/*添加边框样式(粗细为1px, 颜色为红色的实线)*/
    .first>span{border:1px solid red;}
    </style>
    </head>
    <body>
    <p class="first">三年级时,<span>我还是一个<span>胆小如鼠</span>的小女孩</span>,上课从来不敢回答老师提出的问题,生怕回答错了老师会批评我。就一直没有这个勇气来回答老师提出的问题。学校举办的活动我也没勇气参加。</p>
    <h1>食物</h1>
    <ul class="food">
    <li>水果
    <ul>
    <li>香蕉</li>
    <li>苹果</li>
    <li></li>
    </ul>
    </li>
    • 包含(后代)选择器
      包含选择器,即加入空格,用于选择指定标签元素下的后辈元素。如右侧代码编辑器中的代码:

    .first span{color:red;}

    >作用于元素的第一代后代,空格作用于元素的所有后代。

    • 通用选择器

      通用选择器是功能最强大的选择器,它使用一个(*)号指定,它的作用是匹配html中所有标签元素,如下使用下面代码使用html中任意标签元素字体颜色全部设置为红色:
      

      {color:red;}

    • 伪类选择器(一般用于a标签)

      更有趣的是伪类选择符,为什么叫做伪类选择符,它允许给html不存在的标签(标签的某种状态)设置样式,比如说我们给html中一个标签元素的鼠标滑过的状态来设置字体颜色:
      

      a:hover{color:red;}

    • 分组选择符
      当你想为html中多个标签元素设置同一个样式时,可以使用分组选择符
      h1,span{color:red;}

    CSS的继承

    CSS的某些样式是具有继承性的,那么什么是继承呢?继承是一种规则,它允许样式不仅应用于某个特定html标签元素,而且应用于其后代。比如下面代码:如某种颜色应用于p标签,这个颜色设置不仅应用p标签,还应用于p标签中的所有子元素文本,这里子元素为span标签。

    p{color:red;}
    
    <p>三年级时,我还是一个<span>胆小如鼠</span>的小女孩。</p>
    
    • 权值
      • 标签的权值为1,类选择符的权值为10,ID选择符的权值最高为100
    1
    2
    3
    4
    5
    p{color:red;} /*权值为1*/
    p span{color:green;} /*权值为1+1=2*/
    .warning{color:white;} /*权值为10*/
    p span.warning{color:purple;} /*权值为1+1+10=12*/
    #footer .note p{color:yellow;} /*权值为100+10+1=111*/
      **继承也有权值但很低,有的文献提出它只有0.1,所以可以理解为继承的权值最低。**
    
    • 层叠

      • 层叠就是在html文件中对于同一个元素可以有多个css样式存在,当有相同权重的样式存在时,会根据这些css样式的前后顺序来决定,处于最后面的css样式会被应用。
        所以前面的css样式优先级就不难理解了:

      • 内联样式表(标签内部)> 嵌入样式表(当前文件中)> 外部样式表(外部文件中)。

      • 最高权值
        我们在做网页代码的时,有些特殊的情况需要为某些样式设置具有最高权值,怎么办?这时候我们可以使用!important来解决。
    1
    2
    3
    p{color:red!important;}
    p{color:green;}
    <p class="first">三年级时,我还是一个<span>胆小如鼠</span>的小女孩。</p>
    1. !important要写在分号的前面
    2. 这里注意当网页制作者不设置css样式时,浏览器会按照自己的一套样式来显示网页。并且用户也可以在浏览器中设置自己习惯的样式,比如有的用户习惯把字号设置为大一些,使其查看网页的文本更加清楚。这时注意样式优先级为:浏览器默认的样式 < 网页制作者样式 < 用户自己设置的样式,但记住!important优先级样式是个例外,权值高于用户自己设置的样式。
    

    文字排版

    • 字体
      body{font-family:”Microsoft Yahei”;}
    • 字号颜色
      body{font-size:12px;color:#666}
    • 粗体
      p span{font-weight:bold;}
    • 斜体
      p a{font-style:italic;}
    • 下划线
      p a{text-decoration:underline;}
    • 删除线
      .oldPrice{text-decoration:line-through;}
    • 段落缩进
      p{text-indent:2em;}
    • 行间距
      p{line-height:1.5em;}
    • 字间距、字母间距
      • 文字间距、字母间距
        h1{
        letter-spacing:50px;
        }
      • 英文单词间距
        h1{
        word-spacing:50px;
        }
    • 对齐方式
      • 居中
        h1{
        text-align:center;
        }
      • 居左
        h1{
        text-align:left;
        }

    CSS盒模型

    元素分类

    • 块状元素
    1
    <div><p><h1>...<h6><ol><ul><dl><table><address><blockquote><form>

    设置display:block就是将元素显示为块级元素
    a{display:block;}

    1. 每个块级元素都从新的一行开始,并且其后的元素也另起一行。(真霸道,一个块级元素独占一行)
    2. 元素的高度、宽度、行高以及顶和底边距都可设置。
    3. 元素宽度在不设置的情况下,是它本身父容器的100%(和父元素的宽度一致),除非设定一个宽度。
    
    • 内联元素
    1
    <a><span><br><i><em><strong><label><q><var><cite><code>

    当然块状元素也可以通过代码display:inline将元素设置为内联元素

      - 和其他元素都在一行上;
      - 元素的高度、宽度、行高及顶部和底部边距不可设置;
      - 元素的宽度就是它包含的文字或图片的宽度,不可改变。          
    

    内联元素之间有一个间距问题

    • 内联块状元素
    1
    <img><input>

    display:inline-block就是将元素设置为内联块状元素

     - 和其他元素都在一行上;
     - 元素的高度、宽度、行高以及顶和底边距都可设置
    
    • 什么是盒模型
      • 就像是月饼盒与月饼的关系
      • 拥有内边距:padding 外边距margin属性
      • 块状元素都具有盒子模型的特点
      • 属性
        • 边框
          div{
          border-width:2px;
          border-style:solid;
          border-color:red;
          }
          border-top:1px solid red;
        • 宽度和高度
          div{
          width:200px;
          padding:20px;
          border:1px solid red;
          margin:10px;
          }
        • 填充
          div{
          padding-top:20px;
          padding-right:10px;
          padding-bottom:15px;
          padding-left:30px;
          }
        • 边界
          div{margin:20px 10px 15px 30px;}

    padding和margin的区别,padding在边框里,margin在边框外。

    CSS布局模型

    布局模型与盒模型一样都是 CSS 最基本、 最核心的概念。 但布局模型是建立在盒模型基础之上,又不同于我们常说的 CSS 布局样式或 CSS 布局模板。如果说布局模型是本,那么 CSS 布局模板就是末了,是外在的表现形式。

    分类

    • 流动模型
      • 流动(Flow)是默认的网页布局模式
      • 块状元素都会在所处的包含元素内自上而下按顺序垂直延伸分布,因为在默认状态下,块状元素的宽度都为100%。
      • 实际上,块状元素都会以行的形式占据位置
      • 在流动模型下,内联元素都会在所处的包含元素内从左到右水平分布显示。
    • 浮动模型
      • 如果现在我们想让两个块状元素并排显示就设置元素浮动、
      • float:left;
    • 层模型

      • 类似于PS中的图层精确定位
      • 绝对定位

        • 如果想为元素设置层模型中的绝对定位,需要设置position:absolute(表示绝对定位),这条语句的作用将元素从文档流中拖出来,然后使用left、right、top、bottom属性相对于其最接近的一个具有定位属性的父包含块进行绝对定位。如果不存在这样的包含块,则相对于body元素,即相对于浏览器窗口。

          如下面代码可以实现div元素相对于浏览器窗口向右移动100px,向下移动50px。

    1
    2
    3
    4
    5
    6
    7
    8
    div{
    width:200px;
    height:200px;
    border:2px red solid;
    position:absolute;
    left:100px;
    top:50px;
    }
    • 相对定位
      • 如果想为元素设置层模型中的相对定位,需要设置position:relative(表示相对定位),它通过left、right、top、bottom属性确定元素在正常文档流中的偏移位置。相对定位完成的过程是首先按static(float)方式生成一个元素(并且元素像层一样浮动了起来),然后相对于以前的位置移动,移动的方向和幅度由left、right、top、bottom属性确定,偏移前的位置保留不动。
      • 如下代码实现相对于以前位置向下移动50px,向右移动100px;
    1
    2
    3
    4
    5
    6
    7
    8
    #div1{
    width:200px;
    height:200px;
    border:2px red solid;
    position:relative;
    left:100px;
    top:50px;
    }
    • 固定定位
      - fixed:表示固定定位,与absolute定位类型类似,但它的相对移动的坐标是视图(屏幕内的网页窗口)本身。由于视图本身是固定的,它不会随浏览器窗口的滚动条滚动而变化,除非你在屏幕中移动浏览器窗口的屏幕位置,或改变浏览器窗口的显示大小,因此固定定位的元素会始终位于浏览器窗口内视图的某个位置,不会受文档流动影响,这与background-attachment:fixed;属性功能相同。
      - 以下代码可以实现相对于浏览器视图向右移动100px,向下移动50px。并且拖动滚动条时位置固定不变。
      
    1
    2
    3
    4
    5
    6
    7
    8
    #div1{
    width:200px;
    height:200px;
    border:2px red solid;
    position:fixed;
    left:100px;
    top:50px;
    }
    • 组合使用:相对于其他元素定位
      - 使用position:relative来帮忙,但是必须遵守下面规范         
      1.  参照定位的元素必须是相对定位元素的前辈元素:
      2.  参照定位的元素必须加入position:relative;
      3.  定位元素加入position:absolute,便可以使用top、bottom、left、right来进行偏移定位了。
      

    CSS代码缩写

    • 盒模型代码简写
      还记得在讲盒模型时外边距(margin)、内边距(padding)和边框(border)设置上下左右四个方向的边距是按照顺时针方向设置的:上右下左。具体应用在margin和padding的例子如下:

      margin:10px 15px 12px 14px;/上设置为10px、右设置为15px、下设置为12px、左设置为14px/

      • 如果top、right、bottom、left的值相同
        margin:10px;
      • 如果top和bottom值相同、left和 right的值相同
        margin:10px 20px;
      • 如果left和right的值相同
        margin:10px 20px 30px;
        padding、border的缩写方法和margin是一致的
    • 颜色值缩写
      关于颜色的css样式也是可以缩写的,当你设置的颜色是16进制的色彩值时,如果每两位的值相同,可以缩写一半。

      • p{color:#000000;}
        缩写为:p{color: #000;}
      • p{color: #336699;}
        缩写为:p{color: #369;}
    • 字体缩写
      body{
      font-style:italic;
      font-variant:small-caps;
      font-weight:bold;
      font-size:12px;
      line-height:1.5em;
      font-family:”宋体”,sans-serif;
      }

    缩写为:body{
    font:italic small-caps bold 12px/1.5em “宋体”,sans-serif;
    }

    使用这一简写方式你至少要指定 font-size 和 font-family 属性,其他的属性(如 font-weight、font-style、font-varient、line-height)如未指定将自动使用默认值。
    在缩写时 font-size 与 line-height 中间要加入“/”斜扛。