首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我用这9个小技巧封装Vue组件,老大都夸我’封得好‘

把它们设计得更好会使我们的应用程序更容易改变和理解。在这节课中,分享一下在过去几年中工作中学到的 9 个技巧。 1....使用插槽而不是 prop 来显示内容 假设有一个可重复使用的按钮组件,它通过props获取文本。...对于插槽,可以直接在文本中使用标记,而不是在组件中解析它。 3. 将该组件与触发它的因素分组 有时有两个独立的组件在某种情况下一起使用。...最好把它们放在一个新的组件中,这样重复使用和移动它们更容易。 一个常见的例子是 Modal 组件。我们通常在点击一个特定的按钮时显示Modal。...而宽度也是如此。如果用户想让该组件具有响应性,他们必须覆盖其宽度和最大宽度。 因此,通过不在组件内部设置宽度和边距,总是给用户这种控制是有意义的。

93230

理解 React Hooks

一般情况下,我们都是通过组件和自上而下传递的数据流将我们页面上的大型UI组织成为独立的小型UI,实现组件的重用。...,如果第二个参数数组中的成员变量没有变化则会跳过此次改变。...我们可以直接在组件中使用它们,或者我们可以将它们组合到自定义Hook中,例如useWindowWidth。使用自定义Hooks感觉就像使用React的内置API一样。...Custom Hooks 自定义组件 接着上面的监听窗口大小的代码,我们接着讲自定义 hooks, 证明 react hooks 是怎么使到组件内的逻辑可复用的。...[image.png] 后续渲染:从数组中读取的项目为光标增量 4) 事件处理 每个setter都有一个对它的光标位置的引用,因此通过触发对任何setter的调用,它将改变状态数组中该位置的状态值。

5.3K140
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    译|CSS中的间距,前端开发中各种设置间距的优点缺点及实例

    margin 折叠 简而言之,当两个垂直元素具有margin,并且其中一个元素的margin大于另一个元素时,发生边距折叠。在这种情况下,将使用更大的margin,而另一个将被忽略。 ?...用例和实际示例 在这一节中,你将回顾一下在日常工作中,你在处理CSS项目时,会遇到的不同用例。 header 组件 ? 在这种情况下,标题具有logo,导航和用户个人资料。....c-header { padding-left: 16px; padding-right: 16px; } 对于导航,每个链接在垂直和水平侧均应具有足够的填充,因此其可单击区域可以很大,这将增强可访问性...那是一个 div>,内联样式宽度:16px,它唯一的作用是在左边缘和包装器之间增加一个空白空间。 引述这本React游戏手册中的内容。...让我们回想一下Grid用例,以了解如何在其中使用动态间距。

    12.1K10

    使用这种技巧,可以大大地提高前端布局效率

    在CSS 中使用wrapper可能有多种方式,这些方式中,有些会带来一些问题。 在本文中,将介绍 CSS中 的 wrapper 布局,它们如何工作,如何使用它们以及何时不使用它们。...上图显示了当没有用wrapper进行包裹时元素是如何展开的,用户不应该体验这种行为。我们来解释一下背后的原因。...在CSS中实现 wrapper 目前我们已经了解了wrapper基础知识和优点,接下来我们来具体的看看在 CSS 如何使用它。 设置宽度 ? 实现wrapper第一件事就是要确认它的宽度。...Wrapper 的display类型 由于wrapper 是div>,因此默认情况下它是块级元素。 问题是,当要将wrapper内的内容放置在grid中时,该怎么办?...全屏中的 Wrapper 在某些情况下,如果某个部分的背景视口宽度为100%,并且其中包含wrapper`,则可能会出现这种情况。 与上一个示例中介绍的类似。

    3.9K20

    如何使用纯 CSS 制作四子连珠游戏

    这是显而易见的,但它们如何影响其他元素呢?至少计数器值可以改变伪元素的宽度。不同的数有不同的宽度。字符 1 通常比 0 纤细,但这是很难控制的。...最初,红色的按钮被覆盖在黄色的按钮上,然后容器的宽度变化会导致红色的按钮“消失”,显示黄色的按钮。可以将其比作现实中有两个窗格的滑动窗口,一个窗格是固定的(黄色按钮),另一个是可滑动的(红色按钮)。...但是,我注意到伪元素的宽度改变了其父元素的宽度,在本例中父元素是 radio 按钮的容器。 如果你在想,难道不能用阿拉伯数字来解决吗?...应用所讨论的技术使 radio input 的父容器在选中红色 input 时宽度加倍,在选中黄色 input 宽度变为原来的宽度。...为了检测一列中四子相连的情况,每个玩家都有 11 个类型和类选择符链接在一起。在圆孔元素后面添加一个类名为 .outcome 的 div 可以展示输出的信息。

    2K20

    从box-sizing:border-box属性入手,来了解盒模型

    背景:先声明一下运用的场景,假如项目布局使用的是自适应的布局方式,div给出的宽度是百分比的形式,即框占窗口宽度的50%,但边界和内边距是用像素来表示的怎么办?...布局的方式,为了自适应,宽度width采用的是百分比%的形式,border,padding,margin采用的是px尺寸,所有外层的盒子运用了box-sizing:border-box;属性来改变盒子的结构...②max-width属性的另一个好处是可以将容器内的媒体(如图像和视频)控制在容器内(响应式图片):             在上述例子中,图像会引起一个问题--起初它的显示正常,但当容器变得比图像更窄时...而max-width:100%限制了图像的宽度使它的最大宽度与父容器的宽度相等。因此,当父容器宽度缩小到小于图像的宽度时,图像会一起缩小。...类名,就能达到在视口宽度不断变化的情况下,图像都可以达到响应式的缩放形式,这也是图像响应式的秘诀所在。

    1.6K20

    全栈之前端 | 4.CSS3基础知识之盒子模型学习

    描述:在 HTML 中首先会使用 CSS 来对元素进行定位,我们将学习如何使用 CSS 来控制和定位网页元素的位置、大小和布局。...以下是一些与 CSS 元素定位相关的学习资源和主题, 我们将一一的进行学习实际: 盒子模型:了解 CSS 中的盒子模型(前面简单的提及了),包括内容区域、边框、内边距和外边距,以及如何使用这些属性来控制元素的大小和间距... 总结: display 属性可以改变盒子的外部显示类型是块级还是内联,这将会改变它与布局中的其他元素的显示方式。...例如,当一个元素出现在另一个元素上面时,第一个元素的下外边距与第二个元素的上外边距会发生合并。 示例,在下面的code中,两个相邻的div>元素之间存在20px的外边距。...,可起到突出元素的作用, 在 CSS 中使用 outline 属性来规定元素轮廓的样式、颜色和宽度。

    31320

    深入学习下 CSS 间距相关的知识

    边距折叠 简而言之,当两个垂直元素有一个边距,并且其中一个的边距大于另一个时,就会发生边距折叠。 在这种情况下,将使用较大的边距,而忽略另一个边距。...标题组件 在这种情况下,标题具有徽标、导航和用户配置文件。 你能猜出在 CSS 中应该如何设置间距吗? 好吧,让我为你添加一个骨架模型。...以下是我想到的一些问题: 间隔组件如何在父组件中获取其宽度或高度?它将如何在水平和垂直布局中工作?例如:堆栈内的间隔符与添加左侧空间的间隔符。...如果设计需要改变怎么办? 那么,在这种情况下,样式应该改变。 见下文,你看到哪里的灵活性了吗?...让我们回顾一下网格用例,看看如何在其中使用动态间距。

    13.5K40

    前端入门学习--CSS

    通过仅仅编辑一个简单的 CSS 文档,外部样式表使你有能力同时改变站点中所有页面的布局和外观。 CSS 语法 先来实例。...在使用外部样式表的情况下,你可以通过改变一个文件来改变整个站点的外观。每个页面使用link标签链接到样式表。...margin没有背景颜色,是完全透明的 margin可以单独改变元素的上,下,左,右边距。也可以一次改变所有的属性。...如果需要选择紧接在另一个元素后的元素,而且二者有相同的父元素,可以使用相邻兄弟选择器(Adjacent sibling selector)。... display:block - 显示块元素的链接,让整体变为可点击链接区域(不只是文本),它允许我们指定宽度 width:60px - 块元素默认情况下是最大宽度。

    27.7K20

    从box-sizing:border-box属性入手,来了解盒模型

    背景:先声明一下运用的场景,假如项目布局使用的是自适应的布局方式,div给出的宽度是百分比的形式,即框占窗口宽度的50%,但边界和内边距是用像素来表示的怎么办?...时,那么content会随着实际的宽度进行自动缩放;) (3)来看看实际的例子: ①设计稿如下所示: ②实际代码: 本例子中,采用的是flex...布局的方式,为了自适应,宽度width采用的是百分比%的形式,border,padding,margin采用的是px尺寸,所有外层的盒子运用了box-sizing:border-box;属性来改变盒子的结构...②max-width属性的另一个好处是可以将容器内的媒体(如图像和视频)控制在容器内(响应式图片): 在上述例子中,图像会引起一个问题–起初它的显示正常,但当容器变得比图像更窄时...而max-width:100%限制了图像的宽度使它的最大宽度与父容器的宽度相等。因此,当父容器宽度缩小到小于图像的宽度时,图像会一起缩小。

    2.5K10

    CSS常见样式(二)

    这也是最能体现CSS特点的方法,最能体现DIV+CSS中的内容与显示分离的思想,也最易改版维护,代码看起来也是最美观的一种。...直接在HTML文档中读取样式。缺点就是改版麻烦些,单个页 面显得臃肿,CSS不能被其他HTML引用造成代码量相对较多,维护也麻烦些。...第三种:直接在页面的标签里加 div style="border:1px red solid;">div> 这种方法现在用的很少,它只能改变当前标签的样式,如果想要多个 拥有相同的样式,你不得不重复地为每个添加相同的样式...高度不一样的inline-block元素如何顶端对齐?...1.特性:既呈现inline的特性,不占据一整行,宽度由内容宽度决定,又呈现block的特性,可设置宽高,内外边距; 2、去除缝隙:真正意义上的inline-block水平呈现的元素间,换行显示或空格分隔的情况下会有间距

    74320

    jQuery Cheat—Sheet(jQuery学习笔记)

    jQuery能满足以下需求: 取得文档中的元素、修改页面外观、改变文档内容、响应用户的交互操作、为页面添加动态效果、不刷新加载、简化常见的JavaScript任务。 ---- jQuery版本?...; }); 鼠标移入并点击事件 当鼠标指针移动到元素上方,并按下鼠标按键时,会发生 mousedown 事件。 在下面实例中,鼠标移入元素,并点击时,弹出“Bye!...250px }); #### jQuery animate() - 操作多个属性 请注意,生成动画的过程中可同时使用多个属性: $(“button”).click(function(){ $(“...div”).animate({ //写在{}中,属性直接用半角,隔开 left:’250px’, //左移动250px opacity:’0.5’, //透明度改变为...50% height:’150px’, //高度改变为150px width:’150px’ //宽度改变为150px }); }); #### jQuery animate

    16.2K30

    用flex布局实现一个流程设计器

    ,而针对每个节点的配置数据保存在configData上,一般情况下,顶层节点会直接作为数组的一项,而当处于条件分支中时,则需要把后续节点保存在nodeList上。...然后当鼠标移入按钮时显示可添加的节点类型,点击要添加的节点类型后进行添加。...添加一个节点其实就是往数组里插入一项,但不同的节点对应的数组是不一样的,如下图所示: 顶层节点添加下一个节点需要把节点插入顶层数组,分支里的节点插入下一个节点需要插入到自己的nodeList数组里,所以实现时需要区分一下...效果如下: 编辑 编辑主要是当点击某个节点以后可以修改节点标题,节点配置,节点显示的内容一般也是来自节点的配置。 所以对于库来说只要抛出一个点击事件即可,具体的编辑界面用户可根据业务自行开发。...垂直排列 支持垂直排列也很简单,基本上只要在所有设置了display:flex的地方加上flex-direction: column;,然后再把连线由竖的改成水平的,位置调一下就可以了: 最后 本文详细的介绍了一下如何使用

    25830

    「译」Flexbox 基本原理

    > 上面 div 的行为默认遵循正常的 html 文档流,因此从上到下、从左到右进行渲染,并且会占据整个 body 的宽度,因为它们的 display 属性默认是 block。...弹性容器 display: flex 使容器拓展整个可用宽度;与之相对的,display: inline-flex 使容器宽度塌陷至与内容宽度相等。 ?...弹性布局是一维布局,虽然在反转换行的时候,项目会从下到上排列(在方向为 row 的情况下),但是依然保持着从左到右的结构。改变的只有交叉轴。...表面上,这个属性重新分配了项目,但在诸如使用 tab 键对它们进行遍历的交互中则依然保留它们的原始位置。如果项目顺序与可访问性有关的话,这一点是需要考虑的。...这是通过 package.json 文件完成的,它负责跟踪依赖项及其版本。通过终端创建文件类型 [1]: ? npm init 在提示下输入信息,点击回车键进行确认。

    2K30

    是否还在疑惑Vue.js中组件的data为什么是函数类型而不是对象类型

    然后想在图上添加什么东西,只需要再创建一个文件,在该文件中创建一个Vue实例,但不通过el进行挂载,而是直接通过注册的方式,注册到另一个页面,作为别的页面的一部分,例如图中的样子。...李四div> 如果我们此时把实例对象vm2中的data.name 改为 王五,我们来看一下两个实例对象渲染的结果如何 //此处的name会调用实例对象vm1.data.name div>{{ name...vm2.data.name div>{{ name }}div> //会渲染成div>李四div> 这时,我们改变实例对象vm2中data.name的值,改为王五,我们再来看一下这个组件在两个页面中分别渲染成什么样子...'55'},所以当我们改变其中一个实例对象的data.name时,其实是先顺着地址去找到内存中的那个对象,然后改变一些值,但是因为所有创建的实例都是按照地址去寻找值的,所以其中一个改变,另一个也跟着改变啦...此时的情况用图这样表示: ? 结束语 所以讲了那么多,还是一个概念,引用数据类型的表现形式,如果还是有小伙伴不懂的,一定要翻到引言部分,点击链接去看一下这个概念,否则很难理解本篇文章。

    3.5K30

    为了秋招,我开发了一款页面元素高亮插件

    选中的页面内容不一定是一个标签节点,这样子如何实现样式调整? 如何确保操作链路可以双向工作?...那么在此基础上,我们面临的第一个问题就是,如何友好的实现右键打开菜单 3.1 右键菜单 右键菜单,理解中应该是一个弹出层。 那么语义上,实际中,右键菜单都应该以一个独立节点的方式插入到页面中。...宽度,注意不是可视宽度,是页面总宽度 clientHeight, clientWidth 操作菜单的实际宽高 clientX, clientY 页面点击位置,可以用来定位操作菜单位置 scrollTop...同理,计算y坐标也是同样的道理。 #3 如何关闭菜单 MAC的右键菜单有且只有一种关闭方式,那就是点击菜单可选区关闭和点击页面其他地方关闭。此时禁用窗口拖动、滑动。...#2 可遍历操作链路 如果要做到撤销和反撤销,就意味着我们要能做到以下三点: 我们可以通过某种方式再次定位到用户选择的选区 我们可以定位到自己添加的节点 保存插入的HTML内容以及被插入的TEXT 所以我们的

    1.1K30

    【前端就业课 第二阶段】CSS 零基础到实战(03)前端 CSS 动效 transition transform

    本系列文章持续更新,点击专栏就可以看其他文章:点击进入专栏 一、动态效果 transition、transform 1.1 transition 动效(过渡) 在网页中,常规的静态页面感觉过于单调,此时可以使用动态效果为其页面增加效果...在介绍 transition 前我们假定有一个需求:当鼠标移动到某一个 div 时,使 div 可以更改其宽度例如如下 html 代码: div,使其调用了这个样式,此时页面如下: 若想使鼠标悬浮之后发生改变,为其增加 css: .box:hover{ width: 200px; } 此时增加 hover...后当鼠标移动到 div 中,其div 宽度将会变成 200px,效果如下: 我们可以发现,其变换效果太过突兀,缺少过渡,咱们可以使用 transition 为其添加过渡效果,或者说称为动效;简单的使用...transition 只需要知道其两个参数即可,即将要改变的属性以及这个属性在改变过程中需要多长的时间去完成这个效果,如下代码将为以上代码新增一个动画的过渡效果: 通过以上代码即可使之前较为突然的属性改变变成具有动态效果的改变

    1.3K20

    HTML和CSS常见问题整理

    opacity:0:该元素隐藏起来,但不会改变页面布局,如果该元素绑定了事件会触发。...visibility:hidden:该元素隐藏起来,但不会改变页面布局,不会触发该元素已经绑定的事件。...display:node:把元素隐藏起来,并且会改变页面布局,可以理解成在页面中把该元素删掉。 如何画一个三角形 左右边框设置为透明,长度为底部边框的一半。...margin: auto } 方案二:float 自身浮动法 center的div需要放到后面,对左右使用float:left和float:right,float使左右两个元素脱离文档流,中间的正常文档流中...,使下面的子div都处在父div的同一个BFC区域之内 4.分属于不同的BFC时,可以阻止margin重叠 CSS3特性 vh和vw vh 相对于视窗的高度,视窗高度是100vh vw 相对于视窗的宽度

    1.5K30

    移动webapp前端开发小结

    想达到全屏显示的效果必须先通过Safari将网页添加到主屏,再通过主屏的图标打开网站,直接在Safari输入URL是不行的。...,iPhone也会自动把你这个文字加链接样式、并且点击这个数字还会自动拨号!...telephone=yes就开启了把数字转化为拨号链接,要开启转化功能,这个meta就不用写了,在默认是情况下就是开启! 二、媒体查询 在规划整个页面的样式时,我们首先要想好的就是如何做媒体查询。...的横放或竖放来切换布局 更多属性,可参考 http://www.w3.org/TR/css3-mediaqueries/ 2、媒体查询的语法/写法 方法一、直接在CSS文件中添加 @media (min-width...方式二:父元素中只有两个div 部分HTML: div class="box1">div> div class="box2">div> 部分

    1.3K20

    CSS 常见面试题速查

    伪类:以冒号为前缀,被添加到一个选择器末尾的关键字,样式在特定状态下才被呈现到指定的元素 CSS 2.1 E:first-child 匹配父元素的第一个子元素 E:link 匹配所有未被点击的链接...E:visited 匹配所有已被点击的链接 E:active 匹配鼠标已经在其上按下、还没有释放的 E 元素 E:hover 匹配鼠标悬停其三的 E 元素 E:focus 匹配获得当前焦点的 E 元素...,并有一套渲染规则,决定其子元素将如何定位,以及和其他元素的关系和相互作用 即,它是一块独立的区域,让处于 BFC 内的元素与外部元素相互隔离 如何形成 根元素 position:fixed/absolute...而改变绝对定位会触发重新布局,进而触发重绘和复合。 transform 使浏览器为元素创建一个 GPU 图层,但改变绝对定位会使用到 CPU。...被点击访问过的超链接样式不再具有 hover 和 active 了,解决方法是改变 CSS 属性的排列顺序: L-V-H-A(link,visited,hover,active) # rgba()和opacity

    91110
    领券