BFC为块级格式化上下文 属于普通流,是一块独立的渲染区域,BFC的特性容器里面的元素不会影响外边元素布局,当然外部的元素也不能影响内部元素的布局。
1.根元素,既HTML元素(当前文档中 html 标签就是一个BFC)。
2.浮动元素:float值为left 、right。
3.overflow不为visable,为auto scroll hidden。
4.绝对定位元素position:absolute、fixed。
5.行内块元素display 的值为inline-block、table、flex、inline-flex、grid、inline-grid。
1.垂直外边距重叠问题,解决外边距塌陷的问题(盒子垂直方向的距离由 margin 决定。属于同一个BFC的两个相邻盒子的 margin 会发生重叠):
1) :父子元素的外边距塌陷问题:
<style>
.boxs {
width: 300px;
/* overflow: hidden; */ 解决办法
background-color: red;
}
.box1 {
width: 100px;
height: 100px;
background-color: blue;
margin-right:20px;
margin-top: 30px;
}
</style>
</head>
<body>
<div class="boxs">
<div class="box1"></div>
</div>
</body>
2)解决第二种兄弟元素之间外边距塌陷:
两个兄弟上下元素设置margin:20px;按照我们想的应该两个元素相距40px才对是吧,但实际上两个元素相距20px。
问题分析:默认情况下,两个相邻的box的margin会发生重叠的原因,是因为box1和box2都属于html,而html是BFC。因为BFC里面规定了,属于同一个BFC的两个相邻box的margin会发生重叠,所以box1和box2重叠了,也就是外边距重叠。
解决方案:重叠之后,想要不重叠,可以给后面的元素添加一个父元素并且添加声明overflow: hidden; 来解决(添加其他声明也可以,只要可以触发BFC即可)。
可以解决的原因是因为,当给box2添加了父元素并且添加了overflow:hidden;之后,这个父元素boxs就是BFC了,当前的结构里面box1属于BFC html,box2属于BFC boxs,这个时候box1和box2就不属于同一个BFC了,那么也就不会发生重叠了。
2.去除浮动:
问题:li标签浮动,ul高度会塌陷,给ul添加overflow:hidden后,就可以继续包裹li标签,为什么?
问题分析:为什么ul添加了 overflow:hidden;就可以解决高度塌陷,是因为添加了之后,就触发ul为BFC,而BFC里面规定了,计算BFC高度的时候,浮动元素也参与计算。
ul未触发BFC时,li浮动时,ul高度塌陷。
3.自适应两栏布局。
box1浮动,box2会到box1下面,发生了重叠,可以在box2添加overflow:hidden;触发BFC,可以实现右边盒子自适应。
一篇我们讲解了JAVAscript 的基础知识、特点及基本语法以及组成及基本用途,本期就给大家带来了JAVAweb的第二个知识点jquery,大数据开发基础之JAVAjquery,这是本篇文章的主要内容,会给大家带来jquery选择器、事件及验证框架。
一、Jquery简介
jquery是一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库(或JavaScript框架)。JQuery是对JavaScript的封装,用于简化js代码,jquery的文档非常丰富,因为jquery轻量级的特性,文档并不是很复杂,随着新版本的发布,能够很快被翻译成多种语言,这也为jquery的流行提供了条件。
(1)jquery设计宗旨:
write Less,Do More-也就是写更少的代码,做更多的事情。
jquery封装JavaScript常用的功能代码,提供一种简便的JavaScript设计模式,优化HTML文档操作、事件处理、动画设计和Ajax交互。
(2)jquery核心特性:
1、有高效灵活的css选择器,并且,能够对CSS选择器进行扩展;
2、兼容各种主流浏览器;
例如:IE 6.0+、FF 1.5+、Safari 2.0+、Opera 9.0+等等。
3、有独特的链式语法和短小清晰的多功能接口;
4、拥有便捷的插件扩展机制和丰富的插件;
(3)JQuery语法
$(选择器).action()
$(document).ready();//当DOM节点加载后(不需要节点的内容(比如图片,视频等)加载完成)立即执行。
常用语法
css(“属性”,“属性值”); //设置元素的css属性值
addClass(“类名”);//给元素增加类名
next();//该元素其后紧邻的同辈元素
html();//获取元素的html内容
(4)JQuery基本操作
1.事件绑定
$("#id").click(function(){事件出发后需要执行的代码});
2.入口函数
$(function(){需要执行的代码});
3.样式控制
$("#id").css("属性名","属性值");
二、jquery选择器
过滤选择器
使用 : ,表示在冒号前面的选择器中筛选出符合冒号后特征的元素
:first表示选择第一个元素
:last 表示选择最后一个元素
:even 表示选择索引是偶数的元素(索引从0开始)
:odd 表示选择索引是奇数的元素
:eq(index) 表示选择索引值等于index 的元素
:gt(index)表示索引大于index的元素
:lt(index)表示索引小于index的元素
:not(selector)选择不匹配selector选择器的元素
:header 选择标题元素
:focus 选择当前获取焦点的元素
:visable 选择所有可见的元素
:hidden 选择所有隐藏的元素
三、jquery事件
(1)bind(type,[data],fn):为每个匹配元素的特定事件绑定对应的事件处理函数,各参数含义如下:
①type表示事件类型,多个事件类型使用空格分隔;
②data表示传递给绑定函数的额外数据对象,函数中使用event.data接收(了解);
③fn表示绑定的函数;
(2)unbind(type,[data|fn]]):删除每个匹配的元素上已绑定的事件,如果没有参数,则删除该元素上绑定的所有事件,
(3)one(type,[data],fn):该方法可以为元素绑定处理函数,当处理函数触发一次后, 立即被删除,即在每个对象上, 事件处理函数只会被执行一次。
(4)trigger(type,[data]):触发每一个匹配元素上某类事件,type表示一个或多个事件类型, data表示传入函数的数据
(5)keydown([[data],fn]) :当键盘或按钮被按下时触发keydown事件。
(6)submit([[data],fn]):提交表单时触发submit 事件,该事件只适用于表单元素。
以上就是大数据开发基础之JAVA jquery的全部内容了,关于jquery还有个验证框架,验证框架需要具体实例,也不好展示,所以文章中没有验证框架这一节,希望大家有时间自己去验证下。
希望大家点个关注,及时收取最新文章推送。
有问题的欢迎在评论区留言,如有侵权请告知。
者:余澈
在 Taro Next 预览版(Alpha)版本之后,我们没有停下迭代的步伐,经过两个月的开发和数百次提交之后,我们谨慎但坚定地发布 Taro Next 测试(Beta) 版,Beta 版发布后,社区很多开发者使用上了 Taro Next,他们的帮助和赞誉加上我们内部项目使用的良好反馈,Beta 发布一个月之后,我们非常自信地发布了候选版(RC)版本。
在稳定的 Beta 版本里,Taro 也添加了更多的功能:
H5 编译支持是我们版本升级最重要的理由之一。这意味着原来开发者写的小程序应用,现在可以直接运行在 Web 中。添加 H5 支持非常简单,只需要在项目根目录安装 @tarojs/webpack-runner,运行 taro build —type h5 —watch 即可:
$ npm i -D @tarojs/webpack-runner@next
$ taro build —type h5 —watch
和小程序一样,Taro Next 的 H5 端相较于之前版本的 Taro 是一次彻底的重写:基础组件现在全部使用 Web Components 构建,路由系统也完全与前端框架解耦,因此在 H5 端 Taro 也实现了跨框架。不管开发者使用的是 React、Vue 还是 Nerv,都可以同时运行在各种小程序和 H5 上。
早在 Taro 1.2 发布 时,我们就提供微信小程序转 Taro 的功能,转换后的微信小程序应用会变成一个多端应用。现在这个功能也完全兼容 Taro Next 的新架构,并且转换后的代码提供 React 和 Vue 两种选项。和以前一样,只需要在微信小程序项目根目录执行命令 taro convert :
$ taro convert
选择想要转换后的框架即可:
在小程序中渲染 HTML 字符串通常会使用 wxparse 这样的第三方库,但 wxparse 的 API 复杂,拓展性弱,内部实现不准确,最重要的是现在已经停止了维护。比起 wxparse,Taro Next 的 HTML 字符串渲染提供以下的特性:
你可以访问文档渲染 HTML了解更多信息。
在 React 社区有一个著名的 CSS-in-JS 解决方案: styled-components。但遗憾的是,styled-components 使用 <style> 标签来动态地控制样式,在小程序端没有类似的方案。但在 Taro 中我们可以通过 linaria 实现同样的功能,linaria 主要提供以下特性:
其中零运行时对于打包体积有要求的小程序尤为重要。
你可以访问文档使用 CSS-in-JS了解更多信息。
当我们渲染数据量非常大的列表时,框架会根据数据尝试全量渲染视图,这就可能会产生性能问题导致视图无法响应操作一段时间。为了解决这个问题,我们可以采用另一种方式:比起全量渲染数据生成的视图,可以只渲染 当前可视区域(visable viewport) 的视图,非可视区域的视图在用户滚动到可视区域再渲染:
正常渲染和虚拟列表的区别
在开发者工具的直观效果
类似的技术在 Android 开发被称之为 RecyclerView,在 React Native 叫做 VirtualizedList,我们统一命名为虚拟列表(Virtual List),这个组件现在内置在 Taro 中,在 React/Vue 或各种小程序及 H5 皆可使用:
import VirtualList from '@tarojs/components/virtual-list'
你可以访问文档长列表渲染了解更多信息。
自 2.2 开始,Taro 引入了插件化机制,允许开发者通过编写插件的方式来为 Taro 拓展更多功能或者为自身业务定制个性化功能。
该特性在 Taro next 中也可以使用了,官方提供了一个简易的数据 mock 插件 @tarojs/plugin-mock 供大家参考。相关接口和介绍可以通过 官方文档 -> 进阶指南 -> 插件功能 找到。
在 Beta 版本发布之后,除了 React Native 端兼容这一特性在迭代,我们主要的精力投入到 Taro 本身的开源治理和项目治理中,为了保证重大特性更新和架构更改能够顺利推进,我们推出了 Taro 的 RFC 流程机制,这将让 Taro 的进化更加透明公开,同时更多的社区参与势必让 Taro 更加完善。
期间,我们也对文档进行了升级,新文档相比旧版调整了部分目录让信息更合理,查找更方便,内容也更完善,同时也让阅读体验更加友好。
RC 版本,几乎就不会加入新的功能了,主要着重于除错,而后我们将发布正式版。也就是说:
如果你更为关注小程序端及 H5 端的开发,现在就是加入 Taro Next 最好的时机!
感谢 skywalker512 大佬
感谢 cncolder 大佬
欢迎关注凹凸实验室博客:aotu.io
或者关注凹凸实验室公众号(AOTULabs),不定时推送文章:
*请认真填写需求信息,我们会在24小时内与您取得联系。