jQuery使用 前端框架Bootstrap
jQuery查找标签
jQuery对象支持各种选择器、各种方法。
1.基本选择器
一次性获取符合条件的所有标签。
$('#d1') id选择器
$('.c1') class选择器
$('div') 标签选择器
2.组合选择器
嵌套:返回满足多个限制条件的标签
分组:多个条件之间独立,互不影响,一并查找。
$('div#d1') 查找id是d1的div标签
$('span.c1') 查找含有c1样式类的span标签
$('div,span,p') 查找div或者span或者p标签
$('#d1,.c1,span') 查找id是d1的或者class含有c1的或者span标签
3.后代选择器
返回满足条件的所有后代标签
$('div p') 查找div里面所有的后代p标签
$('div>p') 查找div里面的儿子p标签
$('div+p') 查找div同级别下面紧挨着的p标签(第一个弟标签,可能查找不到)
$('div~p') 查找div同级别下面所有的p标签(所有弟标签)
4.属性选择器
根据属性名、属性值、标签名查找标签。
$('[username]') 查找含有username属性名的标签
$('[username="jason"]') 查找含有username属性名并且值等于jason的标签
$('input[username="jason"]')
5.基本筛选器
相当于对jQuery列表中的对象做二次筛选。
:first // 第一个
:last // 最后一个
:eq(index)// 索引等于index的那个元素
:even // 匹配所有索引值为偶数的元素,从 0 开始计数
:odd // 匹配所有索引值为奇数的元素,从 0 开始计数
:gt(index)// 匹配所有大于给定索引值的元素
:lt(index)// 匹配所有小于给定索引值的元素
:not(元素选择器)// 移除所有满足not条件的标签
:has(元素选择器)// 选取所有包含一个或多个标签在其内的标签(指的是从后代元素找)
$('li:first') 优化 $('li').first()
为什么要使用筛选器?为什么不用索引取值?
其实不行,索引出来的值是标签对象!
jQuery列表也支持索引:
使用not进行二次筛选,拿出不属于c1样式类的标签:
找某个id=#d1的ul标签:
6.表单筛选器
仅限于在表单标签中使用。
通过表单标签的某些属性值查找表单。(type selected checked)
$(':text')
$(':password')
$(':checked') :checked会把表单中的包含selected的标签也一并找到 这是一个小bug
$(':selected') 只会找到包含selected的表单标签
7.筛选器方法
$("#id").next()
$("#id").nextAll()
$("#id").nextUntil("#i2")
$("#id").prev()
$("#id").prevAll()
$("#id").prevUntil("#i2")
$("#id").parent()
$("#id").parents() // 查找当前元素的所有的父辈元素
$("#id").parentsUntil() // 查找当前元素的所有的父辈元素,直到遇到匹配的那个元素为止。
$("#id").children();// 儿子们
$("#id").siblings();// 兄弟们
next() 找基准节点同级别下面的节点 until表示找到什么标签就停止:
prev()找基准节点同级别上面的节点
找父标签、爷爷标签:
找前辈:
找所有儿子、找所有兄弟(同级别上下的标签:
)
链式操作的本质
为什么可以不断用点的方式调用jQuery?
用python代码演示:
正常情况下调用对象中的方法后,是不能继续调用的。
链式操作的实质:调用之后返回当前对象
操作标签
1.class操作
获取标签的样式类列表
jQuery | JS |
---|---|
addClass() | classList.add() |
removeClass() | classList.remove() |
hasClass() | classList.contains() |
toggleClass() | classList.toggle() |
2.位置操作
$(window).scrollTop()
获取滚动条偏移量 还可以修改偏移量
3.文本操作
jQuery | JS |
---|---|
text() | innerText |
html() | innerHTML |
val() | value |
jQuery对象[0].files | files[0] |
文档操作建议不要用jQuery。而是通过索引取出标签对象。
4.创建标签
document.createElement() $('<a>')
标签不在页面上,在内存里,需要你动态添加到页面中:
5.属性操作
attr()/removeAttr() xxxAttribute()
attr针对动态变化的属性获取会失真
prop('checked') prop('selected')
attr针对动态获取的属性会失真,比如修改单选框,无法及时正确反馈,用户是否已经勾选上了单选框。
prop可以判断动态变化的属性:
6.添加标签
$(A).append(B)// 把B追加到A
$(A).appendTo(B)// 把A追加到B
$(A).prepend(B)// 把B前置到A
$(A).prependTo(B)// 把A前置到B
$(A).after(B)// 把B放到A的后面
$(A).insertAfter(B)// 把A放到B的后面
$(A).before(B)// 把B放到A的前面
$(A).insertBefore(B)// 把A放到B的前面
7.清空标签
remove()// 从DOM中删除所有匹配的元素。
empty()// 删除匹配的元素集合中所有的子节点。
一个是连你也清掉 一个是你留着:
jQuery事件
事件绑定的两种方法
JS绑定事件
标签对象.on事件名 = function(){}
jQuery事件绑定
方式1:
jQuery对象.事件名(function(){})
方式2:
jQuery对象.on('事件名称',function(){})
// ps:默认就用方式1 不行了再用方式2
/* ps:补充
clone属性
clone(true) 默认不克隆事件 加true就可以 */
对于js的数组无法一键绑定事件:
jQuery可以数组批量挨个绑定事件:
查找button标签,得到一个列表,给列表所有的jQuery对象绑定click事件:
实时监听事件
示例:github登录文本框,没有点提交按钮,但是每次输入都会提示你的输入是否满足要求。
相当于:每次修改文本框内容都会发送请求。(跟针对HTML下拉框的文本域变化事件onchange有点像)
代码示例:
用表单筛选器:text
查找到文本框,给input这个输入事件绑定一个函数。
哪个标签触发事件,this就是哪个标签对象,因为是标签对象,所以需要包一包$(this)
(这个很容易忘)。
也可以用js代码实现:
注意:this是标签对象还是jq对象!
克隆事件 clone
示例:
每次点击按钮,在body中添加一个被克隆的button标签
请注意:clone是jq对象的方法 clone的对象都是假的(只有样子) 只有原先写button的具有click事件
如果想真正的克隆(具有事件):
在clone里面添加true。
事件相关补充
1.取消后续事件
方式1
事件函数的最后return false即可'
有些标签本身含有功能,比如:
button submit 按下按钮会刷新页面
这时候再给这个标签绑定事件,谁会优先执行?
先执行click添加的事件 再执行按钮自己的提交事件
然而我们通常希望,只执行我们添加的事件,原来的事件被覆盖,不再执行,这就需要再时间绑定的匿名函数里加return false
可以取消后续事件 后续及时有自己绑定的更多事件也不执行了
方式2
事件函数都自带一个形参e:
preventdefault 取消默认(事件)
2.阻止事件冒泡
事件函数的最后return false即可
什么叫事件冒泡?以点击事件举例:
div > p > span
嵌套关系 这三个标签都绑定了点击事件。
思考一件事:
点了span是不是相当于点了p也点了div
标签会一层一层往上汇报(父标签有相同事件的情况下,会执行事件绑定的函数
)
取消冒泡只需要在每个事件的匿名函数中加:return false
。即可以取消冒泡,有可以取消事件绑定,一箭双雕。
3.等待页面加载完毕再执行代码
jQuery可以支持你在head写js代码:
$(function(){}) 缩略写法
$(document).ready(function(){}) 完整写法
4.事件委托(重要)
主要针对动态创建的标签也可以使用绑定的事件
$('body').on('click','button',function(){})
将body内所有的单击事件委托给button标签执
js\jQ动态加载的标签 默认是没有事件的 比如这个按钮:
所有需要事件委托,使用第二种JQ绑定事件的方法on(事件类型,选择器,匿名函数)
:
将body里所有的点击事件委托给button(选择器)按钮
这样body内原生按钮、动态加载的按钮都会绑定事件
jquery动画效果(了解)
// 基本
show([s,[e],[fn]])
hide([s,[e],[fn]])
toggle([s],[e],[fn])
// 滑动
slideDown([s],[e],[fn])
slideUp([s,[e],[fn]])
slideToggle([s],[e],[fn])
// 淡入淡出
fadeIn([s],[e],[fn])
fadeOut([s],[e],[fn])
fadeTo([[s],o,[e],[fn]])
fadeToggle([s,[e],[fn]])
// 自定义(了解即可)
animate(p,[s],[e],[fn])
卷轴效果:3000是时间单位毫秒
淡入淡出:0.4是透明度
点赞的动态效果:
Bootstrap页面框架
Bootstrap V3中文: https://v3.bootcss.com/
bootcdn: https://www.bootcdn.cn/twitter-bootstrap/
别人已经提前写好了一大堆css和js 我们只需要引入之后按照人家规定好的操作方式即可使用所有的样式和功能
版本有很多 使用V3即可
文件结构
bootstrap.css
bootstrap.js
ps:js部分是需要依赖于jQuery
CDN
<link href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css" >
<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
pycharm自动提示问题
使用cdn,pycharm不进行代码补全:
先下载一个本地Bootstrap的导入pycharm,加载一下,让pycharm熟悉一下。
bootstrap目录结构
下载的话文件目录有三个文件夹:
- css:只有这两个有用 其余用不到可以删掉
- fonts:字体文件不要修改
- js: npms可删
查看js代码文件可得知:
Bootstrap的js代码是基于jQuery的!
核心部分讲解
- 如果只想用bootstrap静态效果 只用导css
- 想用动态效果 需要导入jq和bootstrap-js代码文件
- bootstrap提前写好了很多样式 只要你写好了样式类名就可以直接用
使用bootstrap其实只需要操作标签的样式类即可
布局容器
网页的左右两侧通常会进行留白处理,使网页看起来不太突兀。
class = "container" 有留白
class = "container-fluid" 没有留白
留白和不留白的区别:
栅格系统(重要)
class = "row" 一行均分12份
class = "col-md-8" 划分一行的12份
留白之后还是可以调整网页布局
将布局容器继续精准划分区域 给div添加样式类row
这个div会均分成12份 (border 3px)
,
在row里面在嵌套div,这些div可以通过样式类申明自己要用的'份数',如上图两个div都要6份,对应下图的左右两个红色区域。
再要一行row(同级再创建一个div标签 使用样式类row):
row里面写超过了12份会自动换行:
另外一种情况(多写了一份导致被迫换行):
ps:col-md-13不存在 因为没写这样的样式类
屏幕参数 响应式布局
在电脑上设定好的布局,在手机显示很容发生变形,导致有内容无法显示出来。
是电脑的时候采取6:6布局 是手机的时候 采取红框中的2:10布局:
通过这种方式来适配 手机 电脑 平板 ,而适配都需要添加样式类的参数。
参数:col-md-6 col-xs-2 col-sm-3 col-lg-3
栅格偏移
有些时候我们只想用一部分栅格,并且需要调整栅格的位置
col-md-offset-3
只想用6份:
将这6份右移3份栅格的距离:
证明一个row是12份
在6份栅格里套一个row:
会基于这六份栅格,再进行12等分:
重要样式
1.表格样式
table基本样式 table-hover悬浮样式 table-striped table-border表格边框样式
disabled禁用
<table class="table table-hover table-striped table-border">
'text-center' 居中
颜色
<tr class="success">
2.表单标签
添加表单样式forn-control
class = "form-control"
不能加form-control的标签:
修改颜色:
3.按钮组
btn-block按钮填充满整个区域
class = "btn btn-primary btn-block"
各种样式:
调大小:
组件
1.图标
bootstrap是给span标签加样式 变成图标 可以根据文本调色
<span class="glyphicon glyphicon-search" aria-hidden="true"></span>
更多图标的网站:https://fontawesome.com.cn/
这个网站的图标样式 不会与bootstrap冲突
2.导航条
写在最上面 且不要写在div c容器里面
class="navbar navbar-inverse" navbar-inverse反色导航条
想扩展导航条的功能 就找到相应的代码 多写一点
导航条固定 添加fixed定位!!
3.其他
- 分页
- 巨幕
搭建网站首页
- 页头
在巨幕上面加 - 缩略图
展示效果:
5.进度条
动态效果的进度条
堆叠效果的进度条
后期可以通过js代码修改进度条的style属性以控制:
Bootstrap JS插件
官方网站:https://v3.bootcss.com/javascript/
模态框
模态框是动态效果需要bootstrap 和jquery
轮播图
调整轮播图速度:应该在js代码里
添加图片只需添加标签:
jQuery使用 前端框架Bootstrap的更多相关文章
- 【html、CSS、javascript-13】前端框架Bootstrap
1.Bootstrap前端框架:包含css样式.js插件.图标等 http://www.bootcss.com/ 2.Font Awesome:非常全的图标大全 https://fontawesome ...
- 前端框架 bootstrap 的使用
内容概要 前端框架 bootstrap 简介 引入方式 布局容器 栅格系统 图标 内容详细 简介 网址:https://v3.bootcss.com/ 版本: 2.X 3.X 4.X 推荐使用3.X版 ...
- 前端框架Bootstrap
前端框架Bootstrap http://www.bootcss.com/ Bootstrap 编码规范 http://codeguide.bootcss.com/
- jQuery后续和 前端框架Bootstrap
目录 一.jQuery后续 1. 动画效果 (1)自定义点赞动画实例 2. jQuery的自带方法 (1)each (类似for循环) (2)data() (存放隐形的数据) 二.前端框架之Boots ...
- 前端框架——BootStrap学习
BootStrap简单总结下:1.栅格系统,能够很好的同时适应手机端和PC端(及传说中的响应式布局) 2.兼容性好 接下来是对BootStrap学习的一些基础案例总结和回顾: 首先引入:bootstr ...
- 简洁灵活的前端框架------BootStrap
前 言 Bootstrap,来自 Twitter,是目前很受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷.[1] ...
- 前端框架bootstrap(响应式布局)入门
Bootstrap,是基于HTML,CSS.javascript的前端框架 该框架已经预定义了一套CSS样式和与样式相对应的js代码(对应的样式有对应的特效.) 开发人员只需要编写HTML结构,添加b ...
- 最受欢迎的前端框架 —— Bootstrap学习
Bootstrap是Twitter的Mark Otto和Jacob Thornton开发的,是目前最受欢迎的前端框架,它简单灵活,使得Web前端开发更加快捷方便. 首先,要基本掌握Bootstrap框 ...
- 前端框架——Bootstrap
一.Bootstrap介绍 凡是使用过bootstrap的开发者,不外乎做这么两件事情:复制and粘贴. Bootstrap官方网址:http://www.bootcss.com Bootstrap, ...
- 前端框架Bootstrap(10.7国庆补写)
框架的官网地址:https://v3.bootcss.com/ 主要学习Bootstrap框架提供的样式.组件.插件的使用. 首先下载到本地,在项目中导入使用: 下载的文件中包含:min.css的是压 ...
随机推荐
- MHA架构的实现方式
转载自:https://www.linuxprobe.com/centos7-mha-mysql5.html 安装mysql5.7,并配置好主从复制 第一:安装mysql57,并关闭防火墙 yum i ...
- Linux Hardening Guide
文章转载自:https://madaidans-insecurities.github.io/guides/linux-hardening.html 1. Choosing the right Lin ...
- 对vue中的data进行数据初始化
this.$data:是表示当前的改变后的this中的数据 this.$options.data():是表示没有赋值前的this中的数据,表示 初始化的data 一般可以使用Object.assign ...
- 洛谷P1438 无聊的数列 (线段树+差分)
变了个花样,在l~r区间加上一个等差数列,等差数列的显著特点就是公差d,我们容易想到用线段树维护差分数组,在l位置加上k,在l+1~r位置加上d,最后在r+1位置减去k+(l-r)*d,这样就是在差分 ...
- 详解ROMA Connect API 流控实现技术
摘要:本文将详细描述API Gateway流控实现,揭开高性能秒级流控的技术细节. 1.概述 ROMA平台的核心系统ROMA Connect源自华为流程IT的集成平台,在华为内部有超过15年的企业业务 ...
- mysql 过程和函数语法学习笔记
CREATE DEFINER=`root`@`%` PROCEDURE `test`(`num` int) BEGIN /*定义变量*/ DECLARE sex TINYINT(2) DEFAULT ...
- java代码整洁之道
package Day01;import org.junit.Test;import java.text.NumberFormat;import java.util.Scanner;public cl ...
- ES6 学习笔记(十一)迭代器和生成器函数
1.前言 JavaScript提供了许多的方法来获取数组或者对象中的某个元素或者属性(迭代).从以前的for循环到之后的filter.map再到后来的for...in和for...of的迭代机制.只要 ...
- ES6 学习笔记(六)基本类型String
字符串String 1.字面量 需要注意的地方: 由单引号或双引号括起来的字符序列. 单双引号可以嵌套,由最外围引号定界字符串 字符串字面量可以拆分成数行,每行必须以反斜线(\)结束,且反斜线都不计入 ...
- 「浙江理工大学ACM入队200题系列」问题 J: 零基础学C/C++83——宁宁的奥数路
本题是浙江理工大学ACM入队200题第八套中的J题 我们先来看一下这题的题面. 题面 题目描述 宁宁参加奥数班,他遇到的第一个问题是这样的:口口口+口口口=口口口,宁宁需要将1~9 九个数分别填进对应 ...