整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

你知道什么是BFC么

你知道什么是BFC么

.什么是BFC?

BFC为块级格式化上下文 属于普通流,是一块独立的渲染区域,BFC的特性容器里面的元素不会影响外边元素布局,当然外部的元素也不能影响内部元素的布局。


2.触发条件?

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。


3.可以解决的应用场景?

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 编译支持

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 上。

微信小程序转 React/Vue

早在 Taro 1.2 发布 时,我们就提供微信小程序转 Taro 的功能,转换后的微信小程序应用会变成一个多端应用。现在这个功能也完全兼容 Taro Next 的新架构,并且转换后的代码提供 React 和 Vue 两种选项。和以前一样,只需要在微信小程序项目根目录执行命令 taro convert :

$ taro convert

选择想要转换后的框架即可:

渲染 HTML 字符串

在小程序中渲染 HTML 字符串通常会使用 wxparse 这样的第三方库,但 wxparse 的 API 复杂,拓展性弱,内部实现不准确,最重要的是现在已经停止了维护。比起 wxparse,Taro Next 的 HTML 字符串渲染提供以下的特性:

  • API 与 Web 保持一致,可以直接通过 React 的 dangerouslySetInnerHTML 或 Vue 的 v-html 调用。
  • 可以通过 CSS 直接控制标签样式
  • 给已经渲染的 HTML 标签绑定事件
  • 在 HTML 解析和渲染都提供了钩子函数满足个性化渲染需求

你可以访问文档渲染 HTML了解更多信息。

CSS-in-JS

在 React 社区有一个著名的 CSS-in-JS 解决方案: styled-components。但遗憾的是,styled-components 使用 <style> 标签来动态地控制样式,在小程序端没有类似的方案。但在 Taro 中我们可以通过 linaria 实现同样的功能,linaria 主要提供以下特性:

  • 近似于 styled-components 的 API
  • 完整的 TypeScript 支持
  • 零运行时

其中零运行时对于打包体积有要求的小程序尤为重要。

你可以访问文档使用 CSS-in-JS了解更多信息。

虚拟列表(VirtualList)

当我们渲染数据量非常大的列表时,框架会根据数据尝试全量渲染视图,这就可能会产生性能问题导致视图无法响应操作一段时间。为了解决这个问题,我们可以采用另一种方式:比起全量渲染数据生成的视图,可以只渲染 当前可视区域(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 大佬

  • 修复了 Current type definition, 删除不能使用的 useScope 定义的问题(#5764);
  • 添加了支持 CSS Variables 的特性 (#5796);
  • 修复了 windows 下的路径问题(#5839);
  • 修复了 animation 定义出错的问题 (#5901)。 感谢 fupengl 大佬
  • 修复了 webpack 配置多余参数导致 webpack,loader 参数校验失败的问题;(#5835);
  • 修复了 react 页面卸载生命周期没有调用的问题(#5826);
  • 修复了缺少 tt 样式文件匹配的问题;
  • 修复了 input maxlength 拼写错误 (#6005);
  • 修复属性数字类型 0 也是有效值 (#6027);
  • 修复了编译原生 tt 小程序样式文件没有 loader 处理的问题 (#6088)。 感谢 wuchangming 大佬
  • 修复了 webpack resolve.modules 设置绝对路径导致的依赖引用错误 (#5858);
  • 修复了 Current.router 获取的数据有误的问题 (#5989)。

感谢 cncolder 大佬

  • 添加 linaria 配置和 webpack 配置 (#5880);
  • html typo (#5893);
  • 将 rich-text 属性设置为可选;
  • 增加路由信息 path 字段 (#5898);
  • ui interaction 中的三个函数参数都是可选的 (#6351)。 感谢 Garfield550 大佬
  • 给 api 增加 cjs 分发,规范部分包的文件包含 (#5991) ;
  • 修复组件 animation 属性和 Animation.export() 方法的类型(#6025) 。 感谢fishead 添加了 framework 检查 (#5977); 感谢 alexloading 大佬修改了 nextTick 适配小程序 setData 回调#5978; 感谢 hvsy 、cuikangyi、 yesmeck、Psli 大佬 。

欢迎关注凹凸实验室博客:aotu.io

或者关注凹凸实验室公众号(AOTULabs),不定时推送文章: