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

CSS 也能实现 if 判断?实现动态高度下的不同样式展现

这个效果在很多场景都会出现,可以算是一个高频场景,那么在今天,我们能否不使用 JavaScript,仅仅凭借 CSS 实现类似于这样的功能呢?...那么除了浮动,还有没有其它有意思的解法?本文我们将一起来探究探究。 方法一:借助最新的容器查询 第一种方法,非常简单,但是对兼容性有所要求。那就是使用容器查询 -- @container 语法。....g-content 添加了 resize: vertical,让它变成了一个可以在竖直方向上通过拖动改变高度的容器,以模拟容器在不同内容的场景下,高度不一致的问题: 我们通过元素的伪元素实现了箭头...,应用该规则下的样式 具体规则为,如果容器的高度小于等于 260px 时,.g-content 元素的伪元素将变得透明 这样,我们就非常简单的实现了容器在不同高度下,ICON 元素的显示隐藏切换: 完整的代码...原因在于: 当 calc(100% - 200px) 的计算值是负数时,我们其实不希望 ICON 出现,此时,乘上一个超级大的倍数,依然是负数,不影响效果 当 calc(100% - 200px) 的计算值是正数时

42550

前端页面替换文本的方法和一些小技巧

在前端页面替换文本有几种做法,不假思索的答案通常是直接用JavaScript。但你有没有想过这完全可以用CSS实现呢? 背景 在前端页面上,有的时候我们需要根据用户行为,替换的显示文本。...譬如在评论中,有读者说为什么不直接使用 $("button").text("Hide"); 这样子直接修改文本。这种做法虽然简单,但是使得数据一部分维护在 DOM、一部分维护在 Javascript。...首先,当目标 element 有 on 这个 Class 时,使用 :after 伪元素,给原 element 覆盖上一个新的文本。...其实这里只是探讨实现方法而已,在实际中不推荐这样使用。虽然 CSS 是负责样式的,但交替显示文本应该超出了“样式”的范畴。...纯 CSS 实现 (最近几篇 blog 好像都喜欢给出 纯 CSS 实现哈) 其实,在前端开发中,我们经常使用 :hover 等伪类,通过 CSS 来实现用户鼠标悬浮到某一元素上时,元素样式的修改。

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

    前端架构师之11_JavaScript事件

    由于开发中提倡JavaScript代码与HTML代码相分离。因此,不建议使用行内式绑定事件。 动态绑定式 JavaScript代码与HTML代码混合编写的问题。...会出现的问题:若在页面还未加载完成的情况下,就使用JavaScript操作DOM元素,会出现语法错误。 改变JavaScript代码的执行时机。...事件名称 事件触发时机 click 当按下并释放任意鼠标按键时触发 dblclick 当鼠标双击时触发 mouseover 当鼠标进入时触发 mouseout 当鼠标离开时触发 change 当内容发生改变时触发...事件名称 事件触发时机 submit 当表单提交时触发 reset 当表单重置时触发 4 练习作业 图片放大特效 准备两张相同的图片,小图和大图。 小图显示在商品的展示区域。

    7410

    Web开发前端调试小技巧——Chrome控制台

    ; console.assert();当第一个参数为false时,显示第一个参数的值; console.log(‘rabbit’); ?...(1) DOM改变:在elements面板中可以点击指定的DOM节点上右击,在弹出的菜单中选择breakon,当选择的节点里面的子节点被增删改查时,断点会被触发。...(2) XHR声明期变化:当XHR生命周期状态发生改变或者XHR的URL与Sources面板右侧的XHRBreakpoints栏设置的字符串匹配时,则断点就会有触发。...(4)Details 当选择一个指定的事件后,会显示这个事件的更多信息;当没有选择事件时,会显示指定的时间帧信息。 ?...好啦,今天的内容就到这里啦,兔妞为大家整理的Chrome调试技巧,不知道有没有帮助呢,如果还有什么更好的用途,欢迎后台留言哦~如果喜欢文章请关注+好看哦,越点越好看~~

    2.2K10

    JS监听中文输入

    在做第六个项目(根据输入框实时调用AJAX古诗匹配)时,当我们输入中文拼音,还在拼音字符状态未选择成中文时,一直在执行我编写的事件监听处理函数(当输入框里的值有变化时执行此函数, 调用AJAX在页面显示数据里包含这些字的古诗...而我想要的是在我们输入拼音未完成中文选择时,不让其执行我们的监听处理函数, 只有选择完中文后才去执行调用AJAX判断有没有包含输入的这些字的古诗。...当输入框里的值有变化时执行此函数 if ($(this).prop('cnStart')) return;//如果正在执行中文输入时,此值为true,执行return=>下面代码不执行...}); 当我们开始进行input的输入改变了input框里的值时,js会监听到input propertychange事件, 执行判断(一开始时$(this).prop('cnStart...而当我们输入框输入的文字还在待选状态时(如:输入拼音未选择完成时),便会触发compositionstart事件, 此时我们通过jquery的prop()方法给这个input元素添加自定义属性(cnStart

    9.5K20

    也谈 setTimeout

    document.body ) { return setTimeout( jQuery.ready ); } ... }, setTimeout( func, 0 ) 当然,初见这种用法时,...这些问题概括来讲是这样:动态往 dom 树中插入元素, 然后立刻、马上操作这个元素(比如选择文本框的文本,改变 select 的 index 等), 普通方式写代码通常不起作用,但是放入 setTimeout...既然是单线程,这些 js 块都是互相阻塞的,第一个 js 块执行过程中, "click" 被触发,但是必须排队,等到第一个块执行完才执行(当然, 排队的方式在各浏览器中不同,我们这里不关注这个)。...如果不抛弃,那么有可能大量的 interval 会在 timer 执行完后同时执行,这显然不符合逻辑。 对于这,浏览器的排队方式是先检查有没有 interval ,如果没有,排队,有就抛弃。...继续看,当 timer 执行完, 第一个 interval 执行,在这个过程中,第三个 interval 触发.在其自身执行过程中,自身也可以被触发。

    1.3K10

    也谈 setTimeout

    document.body ) { return setTimeout( jQuery.ready ); } ... }, setTimeout( func, 0 ) 当然,初见这种用法时,...这些问题概括来讲是这样:动态往 dom 树中插入元素, 然后立刻、马上操作这个元素(比如选择文本框的文本,改变 select 的 index 等), 普通方式写代码通常不起作用,但是放入 setTimeout...既然是单线程,这些 js 块都是互相阻塞的,第一个 js 块执行过程中, "click" 被触发,但是必须排队,等到第一个块执行完才执行(当然, 排队的方式在各浏览器中不同,我们这里不关注这个)。...如果不抛弃,那么有可能大量的 interval 会在 timer 执行完后同时执行,这显然不符合逻辑。 对于这,浏览器的排队方式是先检查有没有 interval ,如果没有,排队,有就抛弃。...继续看,当 timer 执行完, 第一个 interval 执行,在这个过程中,第三个 interval 触发.在其自身执行过程中,自身也可以被触发。

    1.5K100

    总结了一下前端高频面试题的答案

    默认宽度为父元素宽度,可设置宽高,换行显示。 inline 行内元素类型。默认宽度为内容宽度,不可设置宽高,同行显示。...解决办法:使用软件编辑HTML网页内容;如果网页设置编码是gbk,而数据库储存数据编码格式是UTF-8,此时需要程序查询数据库数据显示数据前进程序转码;如果浏览器浏览时候出现网页乱码,在浏览器中找到转换编码的菜单进行转换...堆区内存一般由开发着分配释放,若开发者不释放,程序结束时可能由垃圾回收机制回收。...垃圾回收对于在JavaScript中的字符串,对象,数组是没有固定大小的,只有当对他们进行动态分配存储时,解释器就会分配内存来存储这些数据,当JavaScript的解释器消耗完系统中所有可用的内存时,就会造成系统崩溃...第二个是 To 空间的内存使用占比是否超过限制。当对象从 From 空间复制到 To 空间时,若 To 空间使用超过 25%,则对象直接晋升到老生代中。

    50470

    React基础(4)-理清React的工作方式

    ,只是关注点不一样了的 而在React中,我们可以发现,并没有操作DOM的过程,一切以数据为中心,数据是什么,页面就显示什么 并没有像JS,JQ一样获取元素,添加事件然后执行一些操作的动作....data作为参数,这个函数是一个纯函数,也可以称为是无状函数(函数式组件) 换而言之,类似这种只用作UI显示的函数,我们可以用无状态函数去定义,这在后续若使用了redux做公共数据管理时,把组件里面的state...它是存在于javascript空间树形结构,每次自上而下渲染React组件时,会对比这一次产生的virtual DOM和上一次渲染的virtual DOM,对比就会发现差别,然后修改真正的DOM树时就只需要修改中的部分就可以了的...,无需关注DOM操作,并且React引入了虚拟DOM 它是对DOM树的一种抽象,本质上就是一js对象,当进行视图的改变时,当React的子元素内容发生改变时,并不会引起整个浏览器的重绘和重排,只会更改变化的数据部分...,并且在给JSX添加事件监听时,使用on*EnentType的方式 并且这种事件的监听,它只作用于原生HTML元素上,若放在自定义的组件上时,是不起作用的,具体解决办法,可以引入第三方styled-components

    2.1K20

    React学习(四)-理清React的工作方式

    ,只是关注点不一样了的 而在React中,我们可以发现,并没有操作DOM的过程,一切以数据为中心,数据是什么,页面就显示什么 并没有像JS,JQ一样获取元素,添加事件然后执行一些操作的动作....它是存在于javascript空间树形结构,每次自上而下渲染React组件时,会对比这一次产生的virtual DOM和上一次渲染的virtual DOM,对比就会发现差别,然后修改真正的DOM树时就只需要修改中的部分就可以了的...React的工作方式及优点 在没有组件化React,Vue,Angular之前,毫无疑问,JQ是最直观易懂的,但是当项目逐渐变得复杂庞大时,用JQ写出来的代码耦合度就没那么高了的,正是这样,也就诞生了一些...,无需关注DOM操作,并且React引入了虚拟DOM 它是对DOM树的一种抽象,本质上就是一js对象,当进行视图的改变时,当React的子元素内容发生改变时,并不会引起整个浏览器的重绘和重排,只会更改变化的数据部分...,并且在给JSX添加事件监听时,使用on*EnentType的方式 并且这种事件的监听,它只作用于原生HTML元素上,若放在自定义的组件上时,是不起作用的,具体解决办法,可以引入第三方styled-components

    1.8K30

    Web前端开发应该必备的编码原则

    1、善用DIV来布局 当开发一个Web页面时,要考虑第一件事就是区分页面重点。将这些内容用DIV标签包含起来,页面的代码会呈现出整洁、缩进良好的风格。...为此,开发者应该精简、优化这些Javascript文件。 但有一点和CSS不同,浏览器通常不支持并行加载。这也就是说,当浏览器加载Javascript文件时,将不再同时加载其它内容。...一个好的解决办法是:将Javascript文件的加载顺序放在最后。为了实现这一目标,开发者可以把Javascript代码放在HTML文档的底部,而最好的位置是放在接近标签的地方。...5、善用标题元素 到 这些元素用来突出页面的重点内容。这有助于用户更加关注页面的重点部分。对于博客,我(指本文作者)推荐使用标签来突出博客标题。...7、避免滥用标签 并不是所有块元素都应该用标签来创建。例如,可以在内联元素的属性里添加display:block,将其以块元素的方式显示。

    89200

    2.语义化-HTML进阶

    使用标签来控制样式,是一种错误的做法。HTML关注的是结构(语义),CSS关注的是样式。结构与样式应分离。...alt 属性用于图片描述,其中的描述文字是给搜索引擎看的,并且当图片无法显示时,页面会显示alt中的文字。...title 属性同样用于图片描述,但其中的描述文字是给用户看的,并且当鼠标移动到图片上时,会显示title中的内容。...--这样做才是标签的正确用法--> br标签语义化.png 2.无序列表ul (1)实际开发 在实际开发中,对于列表型数据,为了实现良好的语义,建议使用无序列表(有序列表不推荐),不建议使用...一般情况下,我们会去掉strong和em的默认样式,然后使用CSS重新定义新的样式,但这并不影响这 2 个标签的语义。也就是说,样式只会改变标签的外观,而不会改变标签的语义。

    1.3K30

    Vue新手入门指南(易懂)

    ,随后的渲染,使用了此指令的元素、组件及其所有的子节点,都会当作静态内容并跳过,这个可以用于优化更新性能。...v-show v-show用法与v-if大致一样,不同的是带有v-show的元素始终会被渲染并且保留在DOM中,v-show只是简单地切换元素的CSS属性display,当模板属性为true的时候,控制台显示为...this.jump; } }, }) v-show与v-if的区别 都是根据表达式的真假判断元素显示与隐藏 v-if只有在条件为真时,才对元素进行渲染,v-show...v-show初始开销更高,v-if的切换开销更高 频繁切换时用v-show;运行条件很少改变时用v-if v-for 在Vue中,提供了v-for指令用来循环数据。...使用Vue操作DOM元素时,视图与数据依照任何的一方同时发生改变。

    90310

    每天10个前端小知识 【Day 6】

    //三元表达式:如果不写end参数则为undefined说明第一次调用所以结束索引为arr.length-1 //如果是递归调用则使用传进来的参数end值 var end=...click 延时问题还可能引起点击穿透的问题,就是如果我们在一个元素上注册了 touchStart 的监听事件,这个事件会将这个元素隐藏掉,我们发现当这个元素隐藏后,触发了这个元素下的一个元素的点击事件...使用双等号(==)进行相等判断时,如果两边的类型不一致,则会进行强制类型转化后再进行比较。 使用三等号(===)进行相等判断时,如果两边的类型不一致时,不会做强制类型准换,直接返回 false。...第三方插件进程:每种类型的插件对应一个进程,仅当使用该插件时才创建。 浏览器渲染进程(浏览器内核):内部是多线程的,每打开一个新网页就会创建一个进程,主要用于页面渲染,脚本执行,事件处理等。...注意,GUI 渲染线程与 JavaScript 引擎线程是互斥的,当 JavaScript 引擎执行时 GUI 线程会被挂起(相当于被冻结了),GUI 更新会被保存在一个队列中等到 JavaScript

    12510

    JavaScript与有限状态机

    * 任一时刻,只处在一种状态之中。   * 某种条件下,会从一种状态转变(transition)到另一种状态。 它对JavaScript的意义在于,很多对象可以写成有限状态机。...举例来说,网页上有一个菜单元素。鼠标悬停的时候,菜单显示;鼠标移开的时候,菜单隐藏。如果使用有限状态机描述,就是这个菜单只有两种状态(显示和隐藏),鼠标会引发状态转变。...有限状态机提供了更好的办法:把异步操作与对象的状态改变挂钩,当异步操作结束的时候,发生相应的状态改变,由此再触发其他操作。...如果不希望状态立即改变,就要让回调函数返回StateMachine.ASYNC,表示状态暂时不改变;等到异步操作结束,再调用transition方法,使得状态发生改变。...Javascript Finite State Machine还允许指定错误处理函数,当发生了当前状态不可能发生的事件时自动触发。

    98570

    2023年超全前端面试题-背完稳稳拿offer(欢迎补充)

    使用 BOM,开发者可以移动窗口、改变状态栏中的文本以及执行其他与页面内容不直接相关的动作。 DOM 是指文档对象模型,通过它,可以访问HTML文档的所有元素。 DOM 是 W3C的标准。...触发:添加或者删除可见的DOM元素、元素尺寸改变——边距、填充、边框、宽度和高度 重绘 当一个元素的外观发生改变,但没有改变布局,重新把元素外观绘制出来的过程,叫做重绘。...特点: JavaScript对象是通过引用来传递的,我们创建的每个新对象实体中并没有一份属于自己的原型副本。当我们修改原型时,与之相关的对象也会继承这一改变。...但在JavaScript中this是不固定的,它会随着环境的改变而改变。...这种继承的优点就是对一个简单对象实现继承,如果这个对象不是我们的自定义类型时。缺点是没有办法实现函数的复用。

    1.1K12

    【愚公系列】《AIGC辅助软件开发》031-AI辅助解决各种疑难杂症:警惕小众场景下的误导性回答

    然而,AI在处理特定问题时,尤其是小众场景下,可能会给出误导性的回答,这不仅会影响决策的准确性,还可能导致不必要的困惑和损失。如何识别和避免这些误导性回答,成为了我们需要关注的重要课题。...解决此问题的办法是在使用着色器时手动翻转 `vTextureCoord.y`,例如在片段着色器中: ```glsl vec2 flippedCoord = vec2(vTextureCoord.x...**多重纹理处理(Render Texture)** 如果你使用了 `RenderTexture` 或对纹理进行了其他操作,可能会改变 `vTextureCoord` 的范围。...**纹理集(Texture Atlas)或子纹理** 当使用纹理集(Texture Atlas)时,单个纹理只占整个纹理图集的一部分。...**渲染到 RenderTexture** 当使用 `RenderTexture` 时,渲染到的纹理大小可能与源纹理不完全匹配。结果是纹理坐标可能不会完全填满 0~1 范围。

    11700
    领券