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

BEM会强迫你创建不必要的元素吗?

BEM(Block Element Modifier)是一种前端开发的命名规范和方法论,用于管理和组织CSS代码。它的目标是提高代码的可维护性和可扩展性。

BEM不会强迫你创建不必要的元素。相反,它鼓励开发者使用最少的元素来构建页面,并通过类名的方式来表示元素之间的关系。

BEM的核心概念是块(Block)、元素(Element)和修饰符(Modifier):

  • 块(Block)是一个独立的可重用组件,它代表一个完整的功能单元。块应该是自包含的,不依赖于其他元素或块。
  • 元素(Element)是块的组成部分,它们只在特定的块内部存在,并且具有与块相关的语义。元素的类名应该以块的类名为前缀,用双下划线(__)连接。
  • 修饰符(Modifier)是用于修改块或元素的外观、状态或行为的类名。修饰符的类名应该以块或元素的类名为前缀,用双短横线(--)连接。

通过使用BEM,开发者可以清晰地定义和组织CSS代码,避免选择器的嵌套和样式的冲突。这样可以提高代码的可读性和可维护性,并且方便团队协作开发。

BEM适用于任何规模的项目,并且特别适合大型项目和团队开发。它可以帮助开发者更好地理解和管理代码,减少错误和冲突,并提高开发效率。

在腾讯云的产品中,没有直接与BEM相关的产品或服务。然而,腾讯云提供了一系列与前端开发、云计算和互联网相关的产品,例如云服务器、云存储、人工智能服务等。您可以根据具体需求选择适合的产品,腾讯云的官方网站(https://cloud.tencent.com/)提供了详细的产品介绍和文档。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

描述数据

面对一个数据集,描述它? 描述数据集,目的是为了理解数据。对数据理解越充分和全面,就越能够更好地处理数据和应用数据。 描述自己数据集,可以从这些方面入手。...一 概况分析 1 数据集大小,包括观察大小和维度大小 2 变量类型观察,因为不同变量类型会使用不同观察手段和工具 3 元数据分析,也就是对于数据解释数据,比方说,每个变量表示什么意思,有什么业务含义...二 数据观察 1 从大量数据中可以先选择一部分数据来观察,以对数据有个直观认识 三 数据摘要分析 1 采用描述性统计分析方法,变量类型统计特征进行计算和了解 四 变量重要性分析 1 选择一种算法...,评价数据集中变量重要性 五 可视化分析 1 采用可视化分析,理解变量分布和变量之间关系 我们以描述Iris数据集为例 一 参考代码: # -*- coding: utf-8 -*- """...描述数据 @author: Luqing Wang """ import matplotlib.pyplot as plt import seaborn as sns import pandas

68320

MySQL抖动

MySQL抖动 1. 什么是MySQL 抖动 一条SQL语句正常执行时候特别快,有时候变得特别慢。但是这种场景不是很常见。 2....MySQL 为什么抖动 2.1 脏页 内存数据页跟磁盘数据页内容不一致时候,我们称这个内存为脏页。 2.2 干净页 内存数据写入到磁盘后,内存和磁盘上数据页内容一致,称为干净页。...2.4 什么时候触发flush操作 InnoDB redo log 写满了。 系统内存不够,需要新内存页了,就需要淘汰一些内存页。 MySQL 认为系统空闲时候,开始flush。...这种情况尽量避免,一旦redo log 写满,系统拒绝更新操作,此时更新数为0。 2.5.2 系统内存不够。...2.6 InnoDB 刷脏页控制策略 innodb_io_capacity ,告诉InnoDB磁盘能力,建议设置成磁盘IOPS。

75720

旋转树,见过?

每当向AVL树中插入、删除节点时,AVL树自动地进行旋转操作将树变为平衡状态,从而保证了AVL树平衡性。 旋转树才够强,AVL树查询数据时间复杂度总是控制在 O(logn)量级....{ typedef T1 first_type; typedef T2 second_type; T1 first; // 第一个元素 T2 second; //...第二个元素 // 默认构造函数 pair() : first(T1()), second(T2()) {} // 初始化构造函数 pair(const T1& x, const...子树平衡因子变化,可能影响祖先路径上结点,需要继续向上更新. (1) 当新增结点后,父节点平衡因子变成0,则插入结束....后续更新红黑树介绍,很多人认为红黑树是比AVL树还要优秀结构,不想要了解一下? 还请保持关注哦!

10810

这条SQL索引,如何创建

在微信群中,老虎刘老师提了一个有趣问题,这个SQL,object_id列可选择性非常高,owner列可选择性比较差,认为创建什么索引最佳?...select max(object_id) from t where owner='SYS'; 但从这条SQL看,一共就用了两个字段,object_id和owner,如果使用穷举法,排列组合,能创建B...首先创建测试表,可以看到,object_id选择率很高,owner选择率很低, SQL> create table t as select object_id, owner from all_objects...根据各种执行计划成本,选择出成本值最低一个,虽然owner有索引,但是owner='SYS'记录返回接近一半数据,相比索引单块读,全表扫描多块读,效率更高一些,此时consistents...,如果没这种需求,就可以创建object_id单键值索引,这样一来,使用object_id和其他字段复合检索,都可能用上object_id单键值索引,一举多得。

1.1K30

爬虫送你进监狱

爬虫究竟是合法还是违法? 随着大数据火热,数据相关行业竞争不仅“蒸蒸日上”,爬虫之间战争也越发地激烈。一篇《爬虫送老板进监狱?》...在程序猿圈子里被大量转载,甚至有的程序员因为非法获取数据新闻从而放弃了这一行当。那么,爬虫是什么,它会是悬在程序员头上达摩克利斯之剑?...由于爬虫批量访问网站,因此许多网站采取反爬措施。例如:1.IP频率、流量限制;2.请求时间窗口过滤统计;3.识别爬虫等。...由于网络爬虫根据特定条件访问页面,因而爬虫使用将占用被访问网站网络带宽并增加网络服务器处理开销,甚至无法正常提供服务。...本文由群友不二辰投稿,刚刚得知他职业之后我第一个问问题就是,爬虫合法

1.8K30

正确表格跨页,

Word是我们平日里最常用Office软件,大家都已经很熟悉了。小编最近一直在整理毕业东西,其中关于word里面的表格,就被导师指出了问题。...那么正确做法是怎么样呢,来跟小编学学吧! 软件 ? Microsoft word 2019 ? 视频教程 ? 不会了看看视频呗 ? ? ? 图文教程 ? 1....打开word,打开我们表格,那么这里我随机整理了一个表格,用来演示 ? 2. 打开表格之后,首先将表格行距设置一下,一般1倍或者1.5倍行距就行。 ? 3. 然后看一下,表格分为几页了。...选中下一页表头,按住Shift + Ctrl + Enter,就会产生空格 ? 4. 我们给表格写上续表 ? 5. 选中第二页,第一行,添加一行,写上表头 ? 6....最后,我们将第一页表格选中,将上下两行设置为1磅,中间设置为0.5磅 ? 7. 选中第一行,将下面的线设置为0.5磅 ? 8. 其他分页表格也同样操作,最终我们分页表格就做好了。 ?

1.2K30

爬虫送你进监狱

” 爬虫究竟是合法还是违法? 随着大数据火热,数据相关行业竞争不仅“蒸蒸日上”,爬虫之间战争也越发地激烈。一篇《爬虫送老板进监狱?》...在程序猿圈子里被大量转载,甚至有的程序员因为非法获取数据新闻从而放弃了这一行当。那么,爬虫是什么,它会是悬在程序员头上达摩克利斯之剑?...最早爬虫程序是1994年休斯敦大学Eichmann开发RBSE。著名谷歌公司使用Google Crawler是当时还是斯坦福大学生Brin和Page在1998年用Python开发。...由于爬虫批量访问网站,因此许多网站采取反爬措施。例如:1.IP频率、流量限制;2.请求时间窗口过滤统计;3.识别爬虫等。...由于网络爬虫根据特定条件访问页面,因而爬虫使用将占用被访问网站网络带宽并增加网络服务器处理开销,甚至无法正常提供服务。

3.4K20

进大厂必备RocketMQ

定时消息暂存在名为SCHEDULE_TOPIC_XXXXtopic中,并根据delayTimeLevel存入特定queue,queueId = delayTimeLevel – 1,即一个queue...消息重投可以最大限度保证消息发送成功、不丢失,但是也导致消息重复,当消息量大、网络不好时候消息重复概率就会提高。...我们可以根据需要设置消息重试策略: retryTimesWhenSendFailed:同步发送失败重投次数,默认为2 ,在重投时候不会发送给上次失败broker,尝试向其他broker发送,尽可能保证消息不丢失...死 信队列 死信队列用于处理消费失败消息,当消息消费失败时候,自动进行消息重试,如果达到最大重试次数后,还是没有消费成功,就说明正常情况下不能正确消费该消息,此时消息队列会把这个消息发送到该消费者对应特殊队列中...收发消息前,先创建Topic,创建Topic时需要指定该Topic要存储在哪些Broker上,也可以在发送消息时自动创建Topic。

75730

因技术进步丢掉工作

“我希望自己是错,”他说,“但是当这些科幻般技术被付诸实施后,我们还需要人力做什么?” 新经济? 但是,这些新技术真的是造成十年就业增长低迷元凶?...随着工人调整自身技能,创业者基于新技术创造工作机会,工作数量反弹。这至少是过去贯有的规律。这样一来,问题就变成:现在计算机技术是否有所不同,造成长久非自愿失业?...人们找到新事情来干。” 不过,卡兹也承认,当前数字技术与之前技术进步有所不同,可能影响更多类型工作。他说,问题在于经济史能否提供有用指导。...到底技术减缓就业增长是一种随着劳动力调适而逐渐消失暂时现象,还是会出现如科幻小说里情景:自动化流程和拥有超人技能机器人接管了广泛的人工任务?...他补充说:“这是经济学肮脏秘密之一:技术进步可以改善经济、创造财富,但是没有一个经济学规律说每个人都可以从中受益。”换言之,在与机器竞赛中,有些人胜出,而另一些人败下阵来。

38440

因技术进步丢掉工作

“我希望自己是错,”他说,“但是当这些科幻般技术被付诸实施后,我们还需要人力做什么?” 新经济? 但是,这些新技术真的是造成十年就业增长低迷元凶?...随着工人调整自身技能,创业者基于新技术创造工作机会,工作数量反弹。这至少是过去贯有的规律。这样一来,问题就变成:现在计算机技术是否有所不同,造成长久非自愿失业?...人们找到新事情来干。” 不过,卡兹也承认,当前数字技术与之前技术进步有所不同,可能影响更多类型工作。他说,问题在于经济史能否提供有用指导。...到底技术减缓就业增长是一种随着劳动力调适而逐渐消失暂时现象,还是会出现如科幻小说里情景:自动化流程和拥有超人技能机器人接管了广泛的人工任务?...他补充说:“这是经济学肮脏秘密之一:技术进步可以改善经济、创造财富,但是没有一个经济学规律说每个人都可以从中受益。”换言之,在与机器竞赛中,有些人胜出,而另一些人败下阵来。

76270

简历写了 “熟悉” zookeeper ?那这些

Zxid: znode节点状态改变导致该节点收到一个zxid格式时间戳,这个时间戳是全局有序,znode节点建立或者更新都会产生一个新。...另外当dataversion为 -1时候可以忽略版本进行操作。对一个节点设置权限时aclVersion版本号递增,下边详细说ACL权限控制。...watcher 我们在开头就说过:zookeeper可以为dubbo提供服务注册与发现,作为注册中心,但有想过zookeeper为啥能够实现服务注册与发现?...服务注册: 服务提供者(Provider)启动时,向zookeeper服务端注册服务信息,也就是创建一个节点,例如:用户注册服务com.xxx.user.register,并在节点上存储服务相关数据...以此类推/test/lock/seq-00000003节点监听/test/lock/seq-00000002节点,总是让后一个节点监听前一个节点,不用让所有节点都监听最小节点,避免设置不必要监听,以免造成大量无效通知

41320

软件设计必备 UML,

组件:一个系统中提供一个或者多个接口封装模块。 ? 注释:一个用来对元素元素符号进行注解或约束时所用符号 ? 节点:表示具有一个内存和计算能力物理元素 ?...依赖:描述是当一个实体改变影响到另一个实体时这两个实体之间关系;比如汽车依赖汽油,如果没有汽油,汽车无法行驶,这里汽车与汽油之间关系就是属于依赖关系。...类图中类通常用三个矩形表示,最上面部分来标识类名称;中间部分标识类属性;最下面的部分标识类方法,如下图所示: ?...时序图主要图形符号有参与者,生命线,活动,消息调用,消息返回,自我消息,递归消息,创建信息 ,销毁消息,持续消息组成。...部署图 部署图描述软件系统如何部署到物理环境中去,表明了硬件配置与软件之间关系。 部署图中符号包括组件图中所使用符号元素,还新增了一些符号,比如表示机器节点符号,表示软件构件等。 ?

2.5K20

热议:这样开源项目,支持

算了,我姑且相信没有通过提权突破沙盒能力,允许一次管理员权限吧 结果我一打开,弹出来这个 登录?还必须扫码登录?...顺着说明打开该项目官网,且不谈图片css样式显然没在高分屏上测试过,4k屏直接右侧就白了 谁给你脸还写着代码开源发布源码和你发布安装包是一个东西?...用户能通过源码构建出和安装包一样功能东西?...,却还能截止到现在多出700多star,一些Github用户星星是不是给太随意了点 ------ 我们创建了一个高质量技术交流群,与优秀的人在一起,自己也优秀起来,赶紧点击加群,享受一起成长快乐...如果看好一个事情,一定是坚持了才能看到希望,而不是看到希望才去坚持。相信我,只要坚持下来,一定比现在更好!如果还没什么方向,可以先关注我,这里会经常分享一些前沿资讯,帮你积累弯道超车资本。

56040

都理解创建线程池参数

多线程可以说是面试官最喜欢拿来问题目之一了,可谓是老生之常谈,不管你是新手还是老司机,我相信一定会在面试过程中遇到过有关多线程一些问题。...如果此时一脸懵逼,请不要慌,问题不大。 ? 创建线程池构造方法参数都有哪些?...workQueue 当前线程数超过corePoolSize时,新任务处在等待状态,并存在workQueue中,BlockingQueue是一个先进先出阻塞式队列实现,底层实现涉及Java并发AQS...threadFactory 创建线程工厂类,通常我们自顶一个threadFactory设置线程名称,这样我们就可以知道线程是由哪个工厂类创建,可以快速定位。...“临时”线程来执行这个任务了; 这里创建线程用“临时”来描述还是因为它们不会长期存在于线程池,它们存活时间为keepAliveTime,此后线程池维持最少corePoolSize数量线程。

74640

JAVA反射降低程序性能?

我们看上面这个场景,如果快递员不熟悉小区,是不是慢点,他时间主要花费在了查找百度地图,询问物业管理。...有些人一听到慢,就非常着急下结论,反射怎样怎样不行,怎样怎样不能用。但是,同学,反射到底比直接调用慢多少,,能给我个实际数据?很多人其实对性能只有个模糊概念,而没有数值支撑。...我认为这个情况是非常非常少,绝大多数我们根本就无需考虑这个。就上我上一篇文章提到工厂,程序有多少个实体,有100万个?...如果只是在弹出窗口时候new一下,这个百万分之十秒影响对很重要吗? 另外,有些人讲,我要是真有这种需求,要把一个对象new一百万遍,那不还是慢?这种情况有没有,有!...大多时候,我们会把程序性能归结于编程语言,或者使用了反射等技术,而甚少去关心自己代码,这种心态导致技术发展越来越缓慢,因为已经失去了求知欲望,以及一颗追求技术进步心。

2.2K30

这个不可思议死锁

这篇文章将介绍一个“简单死锁”,这个死锁产生事物中SQL语句都只有一条,而且业务非常简单就是删除一条记录。两个事物同时执行以下两个SQL语句就有可能死锁。...数据是怎么找到? 要说清楚死锁产生原因,就要先理清楚这条SQL是怎么执行,会在那些地方加锁。在此之前先说说数据库是怎么找到我们要删除这行数据。下面两幅图展示根据年龄为30来查记录示意图。...同理第二个SQL语句执行时候,加锁位置也是一样。(可重复度隔离级别上,非唯一索引还要加上间隙锁)。 既然加锁上一样,那应该是在不同索引加锁顺序是不一样。...事物2持有这个锁,事物1持有的锁没有显示,应该是主键上锁,这是符合预期。...尽量使用小事务,在业务允许范围内,将隔离级别改成读已提交,可以减少不些不必要锁; 3. 避免全表扫描; 4. 避免较多索引; 5. 不同事务对表和行操作顺序尽量一致。

1.3K40

爬虫送你进监狱

小詹说:爬虫是个有意思事情,但是与之相伴是许多人好奇一件事——爬虫是否违法?这里分享好朋友「咸鱼学Python」一篇分析文章,能够解答这个问题! 爬虫究竟是合法还是违法?...随着大数据火热,数据相关行业竞争不仅“蒸蒸日上”,爬虫之间战争也越发地激烈。一篇《爬虫送老板进监狱?》在程序猿圈子里被大量转载,甚至有的程序员因为非法获取数据新闻从而放弃了这一行当。...那么,爬虫是什么,它会是悬在程序员头上达摩克利斯之剑? 网络爬虫(英语:web crawler),也叫网络蜘蛛(spider),是一种用来自动浏览万维网网络机器人。...由于爬虫批量访问网站,因此许多网站采取反爬措施。例如:1.IP频率、流量限制;2.请求时间窗口过滤统计;3.识别爬虫等。...由于网络爬虫根据特定条件访问页面,因而爬虫使用将占用被访问网站网络带宽并增加网络服务器处理开销,甚至无法正常提供服务。

5.1K50

ES6这些操作技巧,

本文就讲述ES6这些操作技巧,? ? 强制要求参数 ES6提供了默认参数值机制,允许为参数设置默认值,防止在函数被调用时没有传入这些参数。...在下面的例子中,我们写了一个required()函数作为参数a和b默认值。这意味着如果a或b其中有一个参数没有在调用时传值,默认required()函数,然后抛出错误。...有注意到我们是如何非常高效地使用reduce来同时完成map和filter方法?...,我建议阅读MDN相关代码示例。...可能枚举整个对象然后删除它们,但实际上只需要简单将这些无用属性赋值给变量,然后把想要保留有用部分作为剩余参数就可以了。 下面的代码里,我们希望删除_internal和tooBig参数。

55230

关于BEM反思

逻辑会说会用这个孙子方法。 我经验告诉我,这导致不必要长类名(BEM已经有错,并且没有必要尝试在CSS中反映HTML结构。 解决这个问题花了我很长一段时间。...在我看来更好是只给你孙子元素们一个双重下划线符号加上用不同名字。 如果发现结构太深,可能需要定义一个新组件。 缩短修饰符长度 在BEM中,修饰符类用两个连接符表示。...这很有可能在代码其他实例中使用,例如图像引用或不相关javascript。 如果写这样代码,就是在为自己创造了一个难以在将来重构代码。 当然,现在可能更容易输入。...但是最终会发现自己麻烦更大。 为什么BEM是如此伟大?,就在于它提供了一个清晰命名空间来说明自身作用。无论是手动还是编程(即通过linters)。...结论 我认为:我们不需要用很多不必要条件来是使BEM更复杂,这样会使情况变得更糟糕 每个人都有自己编码风格,这根据工作不同而变化,很多BEM / ITCSS规范没有意义。

60520
领券