如何使用 sass 正确避免在 HTML 上嵌入 twitter bootstrap 类名

2024-03-19

我正在开发一个刚刚开始的 Rails 项目。我们想使用 twitter bootstrap 作为我们样式的基础,一开始我们只是直接在 HTML 代码上使用 bootstrap 的类名,就像 bootstrap 的文档中所示,但在阅读以下文章后:

可维护 CSS 的经验教训 http://blog.pamelafox.org/2012/12/a-tale-of-two-bootstraps-lessons.html

请停止在 HTML 中嵌入 Bootstrap 类 http://ruby.bvision.com/blog/please-stop-embedding-bootstrap-classes-in-your-html

很明显为什么这不是使用 bootstrap 的正确原因,所以经过更多阅读后:

将 CSS 与 HTML 解耦 http://thenittygritty.co/decouple-css

smacss http://smacss.com/

除此之外,似乎使用 sass @extend 是避免使用 bootstrap 的类名的正确方法,所以不要这样做:

<button type="submit" class="btn">Search</button>

我们会这样做:

<button type="submit" class="button">Search</button>

我们的 sass 代码如下所示:

.button {
   @extend ".btn";
}

这种方法的问题在于,除了每次扩展引导类以使用不同名称时都会添加的一堆额外选择器之外,在引导程序使用如下选择器的情况下:

.form-search .input-append .btn, .form-search .form-input-append .btn {
  border-radius: 0 14px 14px 0;
} 

该按钮不会获​​得正确的样式,因为 sass 不会将相同的规则应用于我们的自定义类名,我的意思是,sass 是not这样做:

.form-search .input-append .btn, .form-search .input-append .button, 
.form-search .form-input-append .btn, .form-search .form-input-append .button {
  border-radius: 0 14px 14px 0;
} 

所以我想知道,这是避免将 bootstrap 的类名嵌入到 HTML 中的正确方法吗?如果是这样,我应该如何处理这个问题(它经常发生)?如果没有,那么使用自定义类名但仍然从引导程序获取样式的更好方法是什么?

我真的很感激你对此的想法。请记住,我只是在学习整体网页设计(css、sass、less、html、js 等)。


当您将 .btn 重命名为 .button 时,您还应该将 .form-search 重命名为 .form-searchnew 等? 在这种情况下,上面示例中的 sass 代码应该类似于:

.form-searchnew .input-appendnew .button {
  extend(.form-search .input-append .btn);
}

这是有道理的(我不知道 sass)并产生您期望的 css。

我认为 bootstrap 不仅仅与 css 有关。 Bootstrap 是关于 css、html(结构)和 javascript 的。即使你将 css 与 html 分开,我也不容易迁移到其他框架。除了 css 之外,您还必须更改 html 结构和 javascript 调用。

从 Twitter 的 Bootstrap 2 迁移到 3 的示例(请参阅:将 Bootstrap 更新到版本 3 - 我需要做什么? https://stackoverflow.com/questions/17974998/updating-bootstrap-to-version-3-what-do-i-have-to-do/18069643)。我还想知道您是否可以通过将旧类扩展到新的 css 来进行迁移(请参阅:http://bassjobsen.weblogs.fm/migrate-your-templates-from-twitter-bootstrap-2-x-to-twitter-bootstrap-3/ http://bassjobsen.weblogs.fm/migrate-your-templates-from-twitter-bootstrap-2-x-to-twitter-bootstrap-3/)。读完后迁移指南 http://bootply.com/bootstrap-3-migration-guide,我想你不能。

其他解决方案。 Angular JS 将 Twitter 的 Bootstrap 与 JavaScript 解耦。此外,在这种情况下,迁移似乎并不轻松,请参阅:Bootstrap 3 的 Angular Dialog 指令 https://stackoverflow.com/questions/18150629/angular-dialog-directives-with-bootstrap-3/18241469

也许还可以阅读这篇文章:http://www.jasonwong.org/post/45849350459/migration-from-zurb-foundation-twitter-bootstrap-to http://www.jasonwong.org/post/45849350459/migrating-from-zurb-foundation-twitter-bootstrap-to。它指的是Bourdon http://bourbon.io/ and Neat http://neat.bourbon.io/.

他们网站上的示例:

<!-- HTML markup for the section right below this code block -->
<section>
  <aside>What is it about?</aside>
  <article>Neat is an open source semantic grid framework built on top of Sass and Bourbon…</article>
</section>

// Enter Neat
section {
  @include outer-container;
  aside { @include span-columns(3); }
  article { @include span-columns(9); }
}
// And the result is...

正如他们所说:“它完全依赖于 Sass mixins,不会污染你的 HTML”,这似乎就是你正在寻找的方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 sass 正确避免在 HTML 上嵌入 twitter bootstrap 类名 的相关文章

  • SVG 在 Firefox 中渲染得很糟糕

    我正在制作带有滑动轮播的信息图表 li 我认为 尽管 FF 中 SVG 的错误已得到解决 但 SVG 在 Firefox 中显示为像素化 有人能看到这个问题的解决办法吗 URL http weaver wp weavertest com r
  • 跨浏览器方法使子 div 适合其父级的宽度

    我正在寻找适合孩子的解决方案div进入它的父母width 我在这里看到的大多数解决方案不跨浏览器兼容 eg display table cell IE 不支持 lt 8 解决方案就是不声明width 100 默认为width auto 对于
  • 在 iOS 上不显示数字键盘

    根据苹果的文档 http developer apple com library safari documentation AppleApplications Reference SafariHTMLRef Articles InputTy
  • 框架可以用什么代替?

    假设我有一个包含 50 个网页的网站 每个页面由 A Header 导航 左侧内容 右侧内容 Footer 不使用 Frames 服务器端编程 第三方工具和软件 构架 我需要将这 5 个部分的代码 HTML 标记 分别放入这 50 个页面中
  • FF 和 Webkit 中边框折叠的差异

    我有一个包含以下规则的表 table cellspacing 0 cellpadding 0 style width 100 并且单元格具有以下 CSS td padding 4px height 22px border 1px solid
  • Sublime 2,如何自动关闭HTML标签并将光标放在标签内

    我试图弄清楚如何让 Sublime 2 创建以下行为 Type strong Sublime 然后会立即打印 strong strong 然后你的光标将被放置在标签内 我觉得它在不超过几个月前自动执行了此操作 或者也许我只是产生幻觉 或者正
  • 如何将 OTF/TTF 文件转换为 EOT 格式?

    我需要使用 font face 功能 并且我的字体是 OTF TTF 格式 而 Microsoft 浏览器仅支持 EOT 格式 我尝试使用微软工具WEFT 但它不起作用或者我不明白它是如何工作的 还有其他方法可以将我的字体转换为 EOT 格
  • 捕获动态表中 HTML 元素的值

    我有从数据库生成的以下动态表
  • 如何使

    我有一个列表 用作选项卡列表 div ul class TabControl li a href search Funds Funds 60 a li li a href search Companies Companies 4 a li
  • BootStrap3 单击该项目后保持下拉菜单打开

    我正在使用 Bootstrap 3 0 它具有出色的下拉菜单 如果我单击下拉菜单之外的区域 菜单就会消失 这没关系 但是当我单击下拉菜单项时 菜单消失 我不希望发生这种情况 并且没有选项可以控制切换行为 我希望菜单在单击其中一项后保持打开状
  • Firefox CSS 旋转与 Chrome 旋转不同

    我想制作一个 3D 矩形 平行六面体 用户可以用箭头移动它 它在 Chrome 中工作得很好 但在 Firefox 中 一些转换 实际上很多 与 Chrome 不同 看着this https jsfiddle net 7273yur9 2
  • Bootstrap 3 在移动设备上滑入菜单/导航栏 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我正在构建一个基于浏览器的移动应用程序 我决定使用 Bootstrap 3 作为设计的 CSS 框架 Bootstrap
  • 如何编辑 QProgressBar 的样式表

    我无法在我的应用程序中编辑进度条的颜色 仅编辑文本颜色 pyhton 3 9 PySide6 QT Creator 7 0 2 Python应用程序 https i stack imgur com 6hKFI png import sys
  • 放大 div 内的图像而不移动 div

    如何使图像在此 div 比例内 而不在悬停时进行实际的 div 缩放 所以我只想放大图像 这是代码 div img src some image div Use transform scale container display inlin
  • 向上/向下滚动到带有固定按钮的部分

    我想构建一个用于向上 向下滚动到页面部分标签的脚本 我的源代码如下所示 HTML div class move div class previous UP div div class next DOWN div div section Fi
  • 如何修复连接的可排序对象位置错误的可拖动助手(部分由浮动/相对定位的父元素引起)?

    Preface 我遇到一个问题 当使用放置在浮动 相对定位的父元素中的可拖动元素 可排序元素时 可拖动帮助器偏移不正确 浮动父元素是 Bootstrap 列 其中多个可排序列表放置在一列中 可拖动列表放置在另一列中 Example 这是一个
  • 黑色左/右三角形大小不同

    我使用黑色左指三角形 右左指三角形几何形状作为网站上的链接 并使用它们的 HTML 代码 和 9664 9654 由于某种原因 即使我在没有其他元素的空白页面上使用三角形 它们也不会以相同的大小显示 在 Chrome 上 向左指向的位置比向
  • 使用 css resize:both 调整表格单元格的大小;不使用表

    使用 css resize both 调整表格单元格大小不适用于表格 我需要调整表格及其单元格的大小 可以使用 css 调整大小 css resize both 在 div 中有效 但在表标签中无效 table border 1 tr td
  • 复选标记的 HTML 实体[重​​复]

    这个问题在这里已经有答案了 是否有用于复选标记的 HTML 实体 我在各种 html 实体备忘单中搜索过它 但没有找到 像这样的东西吗 如果是这样 请输入 HTML 10004 And 10003 给出一个更轻的
  • 属性更改时的 jQuery 事件

    我需要一个函数在 divs data page index 属性更改时运行 var active swipeview active dpi parseInt active attr data page index left data pag

随机推荐