web前端基础学习总结 - 图1

单选框与复选框实现点击文字也可选中

  • 第一种方法

    1. <label> <input type="radio" name="gender" value="male" /></label>
    2. <label> <input type="radio" name="gender" value="female" /></label>
  • 第二种方法 - 注意是id的值要与label for的值相同

    1. <input id="male" type="radio" name="gender" value="male" />
    2. <label for="male"></label>
    3. <input id="female" type="radio" name="gender" value="female" />
    4. <label for="female"></label>

    一个完整的表单注册的例子

    1. <form action="">
    2. <input type="text" name="name" placeholder="请输入昵称" />
    3. <textarea
    4. name="sign"
    5. rows="5"
    6. cols="30"
    7. placeholder="请输入个性签名"
    8. ></textarea>
    9. <input name="password" type="password" placeholder="请输入密码" />
    10. <label> <input type="radio" name="gender" value="male" /></label>
    11. <label> <input type="radio" name="gender" value="female" /></label>
    12. <label> <input type="checkbox" name="interest" value="coding" />编程 </label>
    13. <label> <input type="checkbox" name="interest" value="other" />其他 </label>
    14. <select name="career">
    15. <option value="default">请选择职业</option>
    16. <option value="staff">公司职员</option>
    17. <option value="freelancer">自由职业者</option>
    18. <option value="student">学生</option>
    19. <option value="other">其他</option>
    20. </select>
    21. <button type="submit">注册</button>
    22. </form>

    高级选择器

    后代选择器

    书写规则:用空格隔开,例如

    1. /* 选择id名为password的标签内部所有类名为box的元素内部的所有p标签 */
    2. #password .box p{}
    3. /* 选择所有p标签内部的所有span标签 */
    4. p span{}
    5. /* 选择所有p标签内部的所有类名为spanItem的标签 */
    6. p .spanItem{}

    交集选择器

    交集选择器的书写规则,例如

    <a href="#" class="special">超链接</a>
    <a href="#">超链接</a>
    <a href="#">超链接</a>
    <a href="#">超链接</a>
    
    /*所有a标签内,类名为special的标签*/
    a.special{}
    

    子选择器

    子选择器只能选择到儿子这一代,例如

    p>span {
      color: orangered;
    }
    

    并集选择器

    并集选择器的规则是用逗号隔开,例如

    /* 添加相同的颜色属性*/
    .box,p,h3,.phone{
    color:red;
    }
    

    padding的简写

    ```css div{ /上下左右的内边距都是20px/ padding:20px; }

div{ /上下20px,左右30px,顺序不可变/ padding:20px 30px; }

div{ /上下20px,左10px,右30px,顺序为上右下左,不可变/ padding:20px 30px 20px 10px; }

div{ /上20px,下30px,左右10px,顺序也是上右下左,因为左右顺序一样所以省略了左/ padding:20px 10px 30px; }

<a name="faRl3"></a>
### box-sizing-规定如何计算一个元素的总宽高

1. content-box(默认)

计算公式:
> width = 内容的宽度;
> height  = 内容的高度;

2. border-box

计算公式:
> width = 内容的宽度 + padding + border;
> height  = 内容的高度 + padding + border;

<a name="P7ch8"></a>
### box-shadow 阴影
阴影的实现原理可以看作是在矩形下面有一个重叠的,同样大小的矩形,如果它在X轴、Y轴上移动就会有阴影的效果。

- X偏移量:在X轴上移动,向右为正
- Y偏移量:在Y轴上移动,向下为正
- 阴影模糊半径:边线的清晰度
- 阴影扩散半径:向外伸展
- 阴影颜色:矩形下面的矩形的背景色
```css
.box{
    width: 200px;
    height: 200px;
    border:1px solid #c4c4c4;
    /* x偏移量 | y偏移量 | 阴影模糊半径 | 阴影扩散半径 | 阴影颜色 */
    box-shadow: 2px 2px 2px 1px rgba(0, 0, 0, 0.2);
    border-radius: 15px;
}

行内元素和块元素之间的转换

块元素默认的display属性值是block; 行内元素默认的display属性值是inline;

  1. 行内转块

    <span class="demo">    
     这是一个span标签
    </span>
    
    .demo{
     /*将span标签转换成块元素*/
     display: block;
     width: 300px;
     height: 100px;
     background-color: #FFF2CC
    }
    
  2. 块转行内

    <div class="demo">    
     这是一个span标签
    </div>
    
    .demo{
     /*将div标签转换成行内元素*/
     display: inline;
     /* 转换成行内元素以后,宽、高的设置就会失效,即使我们仍然设置了它们 */
     width: 300px;
     height: 100px;
     /* 背景颜色也不会是300*100范围,而是文字有多少面积,背景颜色就又多少面积 */
     background-color: #FFF2CC
    }
    

    z-index

  3. 非static元素的z-index的值为0

  4. z-index的值越大,越在最上面,离观察者越近
  5. 相同z-index值,在HTML中的元素越靠后,则越在最上面
  6. 如果是同样的z-index值,想让某个元素在最上面,则修改其z-index值大于0

    /*h1会被固定且在滚动屏幕时不会被其他元素覆盖*/
    h1 {
    position: fixed;
    left: 30px;
    top: 30px;
    z-index: 1;
    color: yellowgreen;
    }
    

    sticky - 粘性定位

    如:知乎
    web前端基础学习总结 - 图2

    元素居中

    水平居中

  7. 如果是行内元素,可以在父容器里使用 text-algin:center;

  8. 如果是块状元素,可以在子容器里使用 margin:0 auto; 注意要设置 width 。如果不是块状,可以用 display:block; 设置为块状。

    垂直居中

  9. 如果是文字,可以使用 line-height = height;

  10. 更多时候使用 margin-top ,让元素上下居中。
  11. flex

    一个模态框的完整例子

    ```html <!DOCTYPE html>

    web前端基础学习总结 - 图5 web前端基础学习总结 - 图6 web前端基础学习总结 - 图7 web前端基础学习总结 - 图8
```css
body {
  /*去除默认的样式*/
  padding: 0;
  margin: 0;
  background-color: #f5f5f5;
}

nav {
  position: fixed;
  width: 100%;
  height: 68px;
  border: 1px solid #f4f4f4;
  background-color: #fff;
}

img {
  width: 100%;
}

main {
  padding-top: 68px; /*1*/
}

.logo {
  float: left;
  width: 100px;
  height: 36px;
  margin-left: 30px;
  margin-top: 16px;
}

.avatar {
  float: right;
  width: 36px;
  height: 36px;
  margin-right: 30px;
  margin-top: 17px;
  border-radius: 50%;
}

.mask {
  position: fixed;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.7);
}

.modal {
  position: fixed;
  left: 50%;
  top: 50%;
  /*注意一下这里,设置了left和top为50%后,模态框偏右下,故需要偏移其宽高的一半,才居中*/
  margin-left: -150px;
  margin-top: -75px;

  background-color: #fff;

  /* 设置长宽 */
  width: 300px;
  height: 150px;

  /* 设置圆角20px */
  border-radius: 20px;
}

.modal > img {
  display: block;
  width: 200px;
  margin: 39px auto;
}

去掉浏览器的默认样式

html,
body {
  height: 100%;
  margin: 0;
}

ul,
li {
  margin: 0;
  padding: 0;
}
/* 去掉前面的圆点*/
li {
  list-style: none;

}
/*标题都要去掉*/
h1,
h2 {
  margin: 0;
}

p {
  margin: 0;
  padding: 0;
}
/*去掉链接的下划线*/
a{
  text-decoration:none;
}

背景

设置渐变色 - linear-gradient

web前端基础学习总结 - 图10

  • 渐变方向

image.png

  • 渐变位置

例子为从左到右渐变,在30%~70%之间渐变。
web前端基础学习总结 - 图12

背景图片

web前端基础学习总结 - 图13

背景位置

image.png

background合并写法

.box {
  width: 350px;
  height: 250px;
  border: 1px solid #e8e8e8;
  font-size: 30px;
  font-weight: bold;
  color: yellowgreen;

  background-image: url(https://style.youkeda.com/img/ykd-components/logo.png);
  background-repeat: no-repeat;
  background-size: contain;
  background-position: center;
}

上面的写法有些繁琐,如下,可以在background后面写多个属性,没有则置空。
web前端基础学习总结 - 图15
合并后,如下

.box {
  width: 350px;
  height: 250px;
  border: 1px solid #e8e8e8;
  font-size: 30px;
  font-weight: bold;
  color: yellowgreen;

  background: url(https://style.youkeda.com/img/ykd-components/logo.png)
    no-repeat center / contain;
}