ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
>### A.今天学什么? #### 1.`css`几种引入方式 - ##### 1.1内联样式 - 直接在标签中style="" ``` // html <!-- 内联样式 权重1000,最好不要这样写,权重太大不容易调试 --> <div style="width: 100px;height: 100px;background-color: red"> hello world </div> ``` - ##### 1.2内部样式表 - 在`html`文件`head`标签最后使用`style`标签,在标签中写样式 ``` // html <!-- 内部样式表 --> <div class="inner"> 内部样式表 </div> // css <style> /* 内部样式表 */ .inner{ width: 150px; height: 150px; background-color: pink; } </style> ``` - ##### 1.3外部样式表 - 在`html`同级目录创建一个`css`文件夹,在文件夹里面创建专属于该html的`css`文件,在其中写样式,然后在`html`文件中`head`标签后面使用link标签,引入`css`文件。 ``` // html <!-- 外部样式表,请使用该种方法,达成html和css and js的解耦 --> <div class="external"> 外部样式表 </div> // css文件 .external{ width: 200px; height: 200px; background-color: aqua; } // link引入 <!-- 外部样式表 --> <link rel="stylesheet" href="css/01css.css"> ``` #### 2.定位的宽度继承 - ##### 2.1如果不设置子元素的宽,那么会自动继承父元素的宽 - ##### 2.2如果设置子元素绝对定位,那么将不会继承父元素的宽 ``` // html <div class="parent"> <div class="child"></div> </div> // css .parent{ width: 300px; height: 300px; background-color: red; position: relative; } /* 如果不设置子元素的宽,那么子元素会继承父类的宽,也就是默认宽100% */ /* 如果设置子元素绝对定位,那么将不再继承父元素的宽 */ .child{ position: absolute; height: 50px; background-color: pink; } ``` #### 3.margin-top塌陷 - ##### 3.1margin-top出现场景 - 如果给父元素的第一个子元素设置margin-top,则看上去,它的父元素也会有相同的margin值,而子元素相对于父元素则没有margin了,但实际上盒子模型显示无误。这种现象称之为margin塌陷 - ##### 3.2解决方法 - overflow: hidden; 有时候会出现问题,不推荐 - 伪元素 父元素:before{content: "";display: table;} 推荐 ``` // html <div class="parent"> <div class="child"></div> </div> // css /* 如果给父元素的第一个子元素设置margin-top,则看上去,它的父元素也会有相同的margin值, 而子元素相对于父元素则没有margin了,但实际上盒子模型显示无误。这种现象称之为margin塌陷 */ .parent{ width: 300px; height: 300px; background-color: red; } /* 这种margin-top塌陷只有父元素的第一个元素设置margin-top才会出现,所以建议使用伪元素 来给父元素创建第一个子元素,这样其余的元素设置margin-top不会造成塌陷现象 */ .parent:before{ content: ""; display: table; } .child{ margin-top: 100px; width: 100px; height: 100px; background-color: green; } ``` #### 4.margin合并 - ##### 4.1margin合并出现场景 - 当兄弟子元素,第一个margin-bottom和第二个的margin-top值相同时,会发生margin合并,两者的间距并不会是margin-bottom+margin-top,而是单纯的margin-top值(这里因为两者设置值相同,所以哪个都无所谓 - ##### 4.2解决方法 - css的一种特色,如果不想合并,那么可以将两者margin值设置不相同。 ``` // html <div class="parent"> <div class="first"></div> <div class="second"></div> </div> // css .parent{ width: 400px; height: 400px; background-color: red; } /* 当兄弟子元素,第一个margin-bottom和第二个的margin-top值相同时, 会发生margin合并,两者的间距并不会是margin-bottom+margin-top, 而是单纯的margin-top值(这里因为两者设置值相同,所以哪个都无所谓 css的一种特色,想要避开就将两者的margin值设置不相同 */ .first{ width: 100px; height: 100px; background-color: green; margin-bottom: 100px; } .second{ margin-top: 100px; width: 100px; height: 100px; background-color: #3388ff; } ``` #### 5.form表单 - ##### 5.1`form`表单的几种属性-1 - `name`将你输入的值和name属性匹配成一个键值对一样的格式,提交到form表单的action页面,浏览器网址上看到的是user=11&pwd=22&sex=male - `label`的`for`属性,可以达到效果,点击label框,然后转到id为user的input框 - `input`如何变成单选框,两个`input`框的`name`必须相同,不然form表单会认为这不是同一类别的选项。`type`的属性为`radio`,表示使用单选框 - `input`有很多种功能,依靠`type`的种类可以实现不同的效果 ``` // html <form action="http://www.baidu.com"> <!-- label的for属性,可以达到效果,点击label框,然后转到id为user的input框 --> <!-- input的name属性,将你输入的值和name属性匹配成一个键值对一样的格式,提交到form表单的action页面 --> <div> <label for="user">用户名</label> <input type="text" name="user" id="user" /> </div> <div> <label for="pwd">密码</label> <input type="text" name="pwd" id="pwd" /> </div> <div>性别 <!-- 单选框,name必须相同,不然form表单会认为这不是同一类别的选项 radio,表示使用单选框 --> <label for="male">男生</label> <input type="radio" id="male" name="sex" value="male"> <label for="female">女生</label> <input type="radio" id="female" name="sex" value="female"> </div> <div><input type="submit">登录</div> </form> // css 无 ``` - ##### 5.2`form`表单的几种属性-2 - 复选框,将`input`的`type`属性改为`checkbox`,`name`也要相同 - 下拉框,`select`标签中的`option`标签,如果想默认选择一个`option`标签,则在`option`标签中加上`selected` - 文本框,`textarea` ``` // html <!-- 复合选框 --> <div> <label>爱好</label> <input type="checkbox" name="like" />篮球 <input type="checkbox" name="like" />足球 <input type="checkbox" name="like" />乒乓球 </div> <!-- 下拉框 --> <div> <select name="address" id=""> <option value="武汉">武汉</option> <option value="宜昌">宜昌</option> <option value="上海">上海</option> </select> </div> <!-- 文本域 --> <textarea></textarea> ``` - ##### 5.3 - `input`框使用`submit`属性时会发生的问题,边框不会增加input的宽高,所以需要手动增加宽高的值 ``` // html <div> <input class="one" type="text" /> </div> <!-- submit的input框的边框,不会增加其宽高,所以需要另设 --> <div> <input class="btn" type="submit" /> </div> // css *{margin: 0;padding: 0;} .one{ width: 100px; height: 30px; border: 1px solid #333; } .btn{ width: 102px; height: 32px; } ``` #### 6.display和visibility的区别 - ##### 6.1`display`会让元素在页面上真的消失,不占据文档流 - ##### 6.2`visibility`让元素在页面上不显示,但是占据文档流 ``` // html <div>hello world</div> // css div{ /* visibility只是隐藏,元素还是存在页面上,会占据一行 */ visibility: hidden; /* 元素不存在于页面上,不会占据文档流 */ /*display: none;*/ } ``` #### 7.`iframe`的使用 - ##### 7.1`iframe`可以在当前页面载入其他页面 - 需要`iframe`的`name`属性与a标签的`target`属性相同 ``` // html <!-- 要点:iframe的name属性要与a标签的target一样 --> <iframe src="" frameborder="0" name="frame"></iframe> <a href="https://www.baidu.com" target="frame">百度</a> <a href="https://www.taobao.com" target="frame">淘宝</a> // css iframe{ width: 1900px; height: 1000px; border: 1px solid #333; } ```