3.组件
网页中有一些复杂的特殊效果,之前必须使用 js,dom,jq boot为我们封装好了很多常见的组件,我门可以之间使用 方便快捷,但是如果需要个性化处理,比较繁琐 boot中,大量使用元素的自定义属性来调用方法 |
1.下拉菜单
基本结构 <div class="dropdown"> <button class="dropdown-toggle" data-toggle="dropdown"></button> <ul class="dropdown-menu"></ul> </div> |
|
div .dropdown 父级,相对定位 button .dropdown-toggle 画下拉三角 ul .dropdown-menu 隐藏display:none data-toggle=”dropdown” 自定义属性的作用 1.当button被点击时,激活事件 2.自定义属性的值绝对激活哪一个事件 |
2.按钮组
<div class="btn-group btn-group-lg"> |
|
外层div中class有如下值 .btn-group横向按钮组 |
3.信息提示框
<div class="alert alert-warning alert-dismissible"> × </span> 提示信息 |
<h2>信息提示框</h2> |
alert基本类 alert-danger/warning/… 提示框颜色 alert-dismissible为了修饰内部span.close .colse 右浮动 data-dismisss=”aleert” 自定义属性 |
4.导航
①水平导航
|
||||||
②选项卡导航
|
||||||
③胶囊导航
|
***事件激活三部曲
一个事件激活,关注几件事 2.这个事件以什么方式激活 data-toggle"=" collapse " 3.这个事件激活后,改变的目标元素是谁 (data-target="#motai") |
5.导航栏
div.navbar.navbar-expand-sl/lg/md/sm>ul.navbar-nav>li.nav-item>a.nav-link
<div .anvbar.navbar-expend-sl/lg/md/sm> <ul .navbar-nav > <li .nav-item><a nav-link> |
|
.navbar-expend-sl/lg/md/sm:作用,作为子元素ul.navbar-nav的选择器条件,让ul.navbar-nav在主轴方向从y轴变成x轴 div.navbar-expend-*配合ul.navbar-nav可以让导航栏在不同屏幕下横向或纵向显示 响应式导航栏: lg: 大屏超大屏,li横向显示,中小屏纵向显示 |
6.折叠效果
<button data-toggle="collapse" data-target="#demo"> 折叠</button> <div class="collapse" id="demo">内容</div> 折叠,需要折叠内容添加 .collapsee (display:none) 折叠事件data-toggle=”collapse” 折叠目标: 如果是a标签,使用href=”#” ; 如果是button使用data-target=”#” |
|
7.卡片
<div class="card"> <div class="card-header"> </div> <div class="card-body"></div> <div class="card-footer"></div> </div> |
8.手风琴(卡片+折叠)
<div #father> <div .card> <div .card-header> <a .card-link data-toggle=”colapse” href=#d1> 内容</a> </div> <div data-parent=”#father” #d1 .collapse> <div .card-body>内容2</div> </div> </div> </div>
1. .collapse不能和.card-body在同一个标签上, 不然会发生折叠/显示的卡顿 解决方案div.collapse>div.card-body 2.几个折叠部分,可以同时打开,而不能开启一个,其它的都关闭 解决方案,在最外层div(card外部)上写id="parent" 在所有div.collapse中添加事件的绑定data-parent="#parent" 这样就可以保证在最外层div中,只有一个折叠区域可以打开了 |
|
9.折叠导航栏
1.div.navbar-expend-sm和.navbar-toggler的关系 .navbar-toggler显示按钮 祖先有.div.navbar-expend-sm的时候,.navbar-toggler这个按钮显示,
|
<h2>折叠导航栏</h2> |
2.在外层div中navbar-dark/light的作用: 这个类对本地div没有任何修饰, 修饰的是后代元素的字体颜色 |
|
3.navbar-collapse的作用 .navbar-expend-sm .,avbar-collapse配合, 让ul在sm/ms/lg/xl下显示,在xs下, ul的父级div执行.collapse的样式,隐藏 |
|
4..navbar-expend-sm决定了以下事情 ①决定了sm以上显示,sm以下隐藏 ②决定了ul在sm以上横向显示,在sm以下垂直显示 ③决定了折叠div在sm以上显示,在sm以下隐藏 |
10.媒体对象
boot提供了很对类来处理媒体相关的对象(图片,影音) <div .media> <img> <div .media-body> </div> |
|
11.焦点轮播图
轮播图结构 div.carousel .data-ride=”carousel” #demo 相对定位 >div.carousel-inner w100溢出隐藏 >div.carousel-item display:none >img 给最外层div添加事件,data-ride=”carousel” |
|
左右箭头 <a href="# demo" class="carousel-control-prev "> <span class="carousel-control-prev-icon"></span> </a> <a href="#demo" class="carousel-control-next "> <span class="carousel-control-next-icon"></span> </a> 重写箭头样式 .carousel-control-prev,.carousel-control-next { width: 4%; height: 20%; background: #aaa; border-radius: 0.25rem; top:40%; } a标签要添加自定义属性data-slide=”prev/next” 事件目标是最外层div#lunbotu href=”#lunbotu” |
|
指示器 ul.carousel-indicators 决定定位,横向弹性 >li 宽高,背景色,外边距,需要重写li样式 如果让li有被选中的样式,需重写.active样式 /*重写指示器样式*/ .carousel-indicators li{ width: 1rem; height: 1rem;; background: #fff; border-radius: 50%; mragin:0 5px; } .carousel-indicators .active { background-color: #0AA1ED; } 点击li激活事件 data-slide-to=”图片下标” 下标从0开始 事件改变的目标 .data-target=”#demo” 整个轮播图最外层的div#id |
12.模态框
覆盖在父窗体上的一个子窗体 目的:用于与用户做一些互动 div #motai .modal >.modal-dialog >div.modal-content 关闭事件: button.close data-dismis=”modal” |
13.其它组件
1.徽章
2.巨幕
3.分页
4.面包屑导航
5.进度条
|
4.js插件
5. sass 定制
BOOT定制:scss/sass
bootstrap最重要:响应式 + 栅格布局 + scss/sass |
CSS有很多缺点
语法不够强大,没有变量,没有合理的样式复用机制,导致难以维护。
我们要使用动态样式语言,赋予css新的特性,提高样式羽凡的可维护性。 常用的动态样式语言: 1.SCSS/SASS (scss兼容sass,scss更接近 ) |
1.SCSS详解
①什么是scss
scss是一款强化css的辅助工具,它和css语法很像。 它在css的语法基础上,添加了变量,嵌套,混合,导入,函数等高级功能,这些拓展命令使css更加强大与优雅 浏览器不能直接解析scss文件,需要在项目中吧scss转义成css文件,让浏览器解析。 scss可以让css开发更高效 |
②scss的安装与使用
scss在服务器端使用,必须安装nodejs,而且版本在v8.11以上 |
在线安装:npm install –g node-sass 离线安装:找到nodejs安装路径,将安装包文件放到nodejs文件夹下 验证安装成功:cmd > node-sass –v 验证版本 |
③SCSS文件转换从CSS文件
1.单文件转换 创建scss文件, cmd> node-sass scss/*.scss css/*.css scss/*.scss : 要转换的scss的文件路径和文件名 css/*.css :转换后的css的文件路径和文件名 |
2.多文件转换 cmd> node-sass scss(文件夹名称) –o css(文件夹名称) |
3.单文件监听 cmd> node-sass –w scss/*.scss css/*.css 开启,系统会盯着*.scss,当*.scss内容发生改变保存的时候,自动转换位*.css |
4.多文件监听 cmd> node-sass –w scss -o css |
④SCSS基础语法
1.变量
使用$声明变量,变量名包含 - , _ ; 命名规则基于与css选择器相同,尽量做到见名知意 总结: 1.变量声明在{ }外,整个scss文件都可以使用; 变量声明在{ }之内,只有当前{ }内可以使用。 2.!default规则,如果此变量在之前已经声明辅赋值了,俺么使用之前的值, 如果之前没有声明赋值,使用现在的值 |
2.嵌套
*.html <div#content> <div.top> <p> <h1> </div> <div.buttom> <buttom> |
*.scss
|
*.css #content div.top { |
|
伪类的嵌套 需要在伪类选择器之前添加&,如果不添加,会生成一个空格,导致伪类失败 |
|
||
|
|||
|
3.导入(@import)
在scss语法中,如果一个scss文件以下划线(_)开头,那么这个scss文件就是一个局部scss文件 scss文件转换成css文件的时候,不会把局部scss文件进行转换,只转换不以下划线开头的文件(局部scss文件)
导入语法: @import “ name”; 导入的时候,不写下划线,不写后缀, 局部文件被导入后,局部文件中的样式,会在全局文件转换的css中生成 同时,局部文件中声明的变量,可以在全局文件中使用 |
4.混合器 (@mixin-@include)
把多个选择器都会使用的样式封装进一个混合器,需要使用这些样式选择器,可以调用这个混合器,实现代码重用
关键字 声明混合器 @mixin 混合器名称($参数1,$参数2){ 样式} 调用混合器 @include 混合器名称($参数1,$参数2); 混合器的使用场合: CSS Hack |
5.继承( @extend)
一个选择器可以使用另外一个选择器的所有样式 关键字 @extend 转换之后,继承的表现方式是群组选择器
|
⑤运算
加减乘除余 + - / % 如果必要,会在不同单位之间转换,(前提是scss能转) 1. 加法
2. 减法
3. 除法
4. 字符串的插值操作
5. 颜色运算
|
⑥函数
1.scss预定义了很多函数,有有些函数直接可以在css中使用
2.数学函数
3.字符串函数
4.自定义函数
|
⑦指令
@if(){}@else if(){}@else{} 注意:bool值的小括号可以去掉,加个空格 |