首页 > web前端 > css教程 > 正文

每个 UI 开发人员都应该知道的 Bootstrap 技巧

Mary-Kate Olsen
发布: 2024-11-02 06:13:02
原创
953 人浏览过

Bootstrap Tricks Every UI Developer Should Know

简介:增强您的 Bootstrap 游戏

嘿,UI 开发人员朋友们!您准备好将您的 Bootstrap 技能提升到新的水平了吗?如果您点头(或者至少思考一下),那么您来对地方了。今天,我们将深入研究 10 个很棒的 Bootstrap 技巧,它们将使您的生活更轻松,让您的项目大放异彩。无论您是 Bootstrap 新手还是经验丰富的专业人士,这些技巧都将帮助您更聪明地工作,而不是更努力。所以,拿起你最喜欢的饮料,放松一下,让我们探索一些很酷的方法来增强你的 Bootstrap 开发!

1. 自定义网格断点:量身定制的响应能力

让我们从一个改变游戏规则的事情开始:自定义网格断点。我们都知道 Bootstrap 的默认断点很棒,但有时它们只是不能满足我们特定项目的需求。这就是奇迹发生的地方:

如何实现自定义断点

  1. 打开您的 Sass 变量文件(通常是 _variables.scss)。
  2. 找到 $grid-breakpoints 变量。
  3. 修改现有断点或添加新断点,如下所示:
$grid-breakpoints: (
  xs: 0,
  sm: 576px,
  md: 768px,
  lg: 992px,
  xl: 1200px,
  xxl: 1400px,
  custom: 1600px
);
登录后复制
登录后复制
登录后复制

现在您在 1600 像素处有了一个闪亮的新“自定义”断点!但等等,还有更多。不要忘记更新容器最大宽度以匹配:

$container-max-widths: (
  sm: 540px,
  md: 720px,
  lg: 960px,
  xl: 1140px,
  xxl: 1320px,
  custom: 1540px
);
登录后复制
登录后复制
登录后复制

通过这些更改,您现在可以使用像 col-custom-6 这样的类来进行超精确的布局控制。很酷吧?

2. Sass Mixins:你最好的新朋友

如果您没有将 Sass mixin 与 Bootstrap 一起使用,那么您就错过了一些节省时间的好处。让我们看几个例子,它们会让你想知道没有它们你是如何生活的。

响应式字体大小

是否曾经想根据屏幕宽度调整字体大小而不编写大量媒体查询?看看这个:

@mixin responsive-font($min-size, $max-size, $min-width, $max-width) {
  font-size: calc(#{$min-size}px + (#{$max-size} - #{$min-size}) * ((100vw - #{$min-width}px) / (#{$max-width} - #{$min-width})));
}

// Usage
h1 {
  @include responsive-font(24, 48, 320, 1200);
}
登录后复制
登录后复制
登录后复制

这个 mixin 可以在 320 像素视口宽度的 24 像素和 1200 像素视口宽度的 48 像素之间平滑地缩放字体大小。很整洁吧?

快速弹性盒中心

使事物居中是一项常见任务,那么为什么不让它变得超级简单呢?

@mixin flex-center {
  display: flex;
  justify-content: center;
  align-items: center;
}

// Usage
.centered-content {
  @include flex-center;
}
登录后复制
登录后复制
登录后复制

现在您只需一行代码即可将任何内容居中。未来的你会感谢你的!

3.自定义表单样式:脱颖而出

Bootstrap 的表单样式很棒,但有时您想要更独特的东西。让我们来活跃一点吧!

花哨的单选按钮

谁说单选按钮一定很无聊?试穿一下尺码:

.custom-radio {
  .custom-control-input {
    &:checked ~ .custom-control-label::before {
      background-color: #007bff;
      border-color: #007bff;
    }
    &:checked ~ .custom-control-label::after {
      background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
    }
  }
}
登录后复制
登录后复制
登录后复制

这为您提供了一个时尚、现代的单选按钮,选择时会显示漂亮的动画。不要忘记更新颜色以匹配您的品牌!

时尚的选择下拉菜单

默认选择下拉菜单看起来有点……好吧,默认。让我们解决这个问题:

$grid-breakpoints: (
  xs: 0,
  sm: 576px,
  md: 768px,
  lg: 992px,
  xl: 1200px,
  xxl: 1400px,
  custom: 1600px
);
登录后复制
登录后复制
登录后复制

这为您的选择下拉菜单提供了自定义箭头图标和漂亮的焦点效果。细节才是最重要的!

4. 实用类:CSS 的瑞士军刀

Bootstrap 的实用程序类非常强大,但有时您只需要更多。让我们创建一些自定义实用程序来让您的生活更轻松。

响应式边距和填充

想要更精细地控制间距?试试这个:

$container-max-widths: (
  sm: 540px,
  md: 720px,
  lg: 960px,
  xl: 1140px,
  xxl: 1320px,
  custom: 1540px
);
登录后复制
登录后复制
登录后复制

现在您已经有了像 mt-md-6 这样的类,在中等屏幕及以上屏幕上的上边距为 4rem。间距完美!

文本截断

需要优雅地截断文本?这是一个方便的实用程序类:

@mixin responsive-font($min-size, $max-size, $min-width, $max-width) {
  font-size: calc(#{$min-size}px + (#{$max-size} - #{$min-size}) * ((100vw - #{$min-width}px) / (#{$max-width} - #{$min-width})));
}

// Usage
h1 {
  @include responsive-font(24, 48, 320, 1200);
}
登录后复制
登录后复制
登录后复制

只要将此类添加到任何元素,长文本就会被省略号截断。简单但有效!

5. 自定义组件:跳出框框思考

虽然 Bootstrap 提供了一组很棒的组件,但有时您需要一些不同的东西。让我们创建一个自定义组件来让事情变得有趣。

具有悬停效果的精美卡片

谁不喜欢良好的卡片悬停效果?看看这个:

@mixin flex-center {
  display: flex;
  justify-content: center;
  align-items: center;
}

// Usage
.centered-content {
  @include flex-center;
}
登录后复制
登录后复制
登录后复制

现在你的卡片在悬停时会稍微抬起并使图像变暗。它很微妙,但却为您的设计增添了良好的交互性。

6. 性能优化:减脂

Bootstrap 很棒,但如果您不使用它的所有功能,它可能会有点重。一起来看看如何瘦身吧。

定制

与其包含所有 Bootstrap,为什么不构建仅包含您需要的组件的自定义版本呢?方法如下:

  1. 克隆 Bootstrap 存储库。
  2. 导航到 scss 文件夹。
  3. 打开 bootstrap.scss。
  4. 注释掉不需要的组件。
  5. 编译您的自定义版本。

例如,如果您不使用轮播或工具提示,您的 bootstrap.scss 可能如下所示:

.custom-radio {
  .custom-control-input {
    &:checked ~ .custom-control-label::before {
      background-color: #007bff;
      border-color: #007bff;
    }
    &:checked ~ .custom-control-label::after {
      background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
    }
  }
}
登录后复制
登录后复制
登录后复制

这可以显着减小 CSS 文件大小并缩短加载时间。每千字节都很重要!

7. 辅助功能增强:面向所有人的包容性设计

可访问性对于创建包容性网络体验至关重要。让我们看看一些增强 Bootstrap 辅助功能的方法。

跳过链接

跳过链接可帮助键盘用户更有效地浏览您的网站。以下是如何实现它们:

.custom-select {
  appearance: none;
  background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;
  padding-right: 2.25rem;

  &:focus {
    border-color: #80bdff;
    box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
  }
}
登录后复制
登录后复制
$spacer: 1rem;
$spacers: (
  0: 0,
  1: $spacer * .25,
  2: $spacer * .5,
  3: $spacer,
  4: $spacer * 1.5,
  5: $spacer * 3,
  6: $spacer * 4,
  7: $spacer * 5
);

@each $breakpoint in map-keys($grid-breakpoints) {
  @include media-breakpoint-up($breakpoint) {
    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
    @each $prop, $abbrev in (margin: m, padding: p) {
      @each $size, $length in $spacers {
        .#{$abbrev}#{$infix}-#{$size} { #{$prop}: $length !important; }
        .#{$abbrev}t#{$infix}-#{$size},
        .#{$abbrev}y#{$infix}-#{$size} {
          #{$prop}-top: $length !important;
        }
        .#{$abbrev}r#{$infix}-#{$size},
        .#{$abbrev}x#{$infix}-#{$size} {
          #{$prop}-right: $length !important;
        }
        .#{$abbrev}b#{$infix}-#{$size},
        .#{$abbrev}y#{$infix}-#{$size} {
          #{$prop}-bottom: $length !important;
        }
        .#{$abbrev}l#{$infix}-#{$size},
        .#{$abbrev}x#{$infix}-#{$size} {
          #{$prop}-left: $length !important;
        }
      }
    }
  }
}
登录后复制
登录后复制

这将创建一个仅在聚焦时可见的链接,允许键盘用户直接跳至主要内容。

增强的焦点样式

Bootstrap 的默认焦点样式很实用,但我们可以让它们在视觉上更具吸引力:

$grid-breakpoints: (
  xs: 0,
  sm: 576px,
  md: 768px,
  lg: 992px,
  xl: 1200px,
  xxl: 1400px,
  custom: 1600px
);
登录后复制
登录后复制
登录后复制

这会创建一个更明显的焦点样式,与 Bootstrap 的配色方案配合良好。

8. 响应式图像:在任何设备上都能呈现完美的图片

图像可以成就或毁掉你的设计,尤其是在移动设备上。让我们看看一些响应式处理图像的方法。

响应式背景图像

想要一个在任何设备上看起来都很棒的全角背景图片吗?试试这个:

$container-max-widths: (
  sm: 540px,
  md: 720px,
  lg: 960px,
  xl: 1140px,
  xxl: 1320px,
  custom: 1540px
);
登录后复制
登录后复制
登录后复制

这会根据视口宽度加载不同大小的图像,确保您的背景始终看起来清晰,而不会在较小的设备上产生不必要的大文件。

延迟加载

通过延迟加载图像来缩短页面加载时间:

@mixin responsive-font($min-size, $max-size, $min-width, $max-width) {
  font-size: calc(#{$min-size}px + (#{$max-size} - #{$min-size}) * ((100vw - #{$min-width}px) / (#{$max-width} - #{$min-width})));
}

// Usage
h1 {
  @include responsive-font(24, 48, 320, 1200);
}
登录后复制
登录后复制
登录后复制
@mixin flex-center {
  display: flex;
  justify-content: center;
  align-items: center;
}

// Usage
.centered-content {
  @include flex-center;
}
登录后复制
登录后复制
登录后复制

此脚本使用 Intersection Observer API 仅在图像即将进入视口时加载图像,从而显着缩短初始页面加载时间。

9. 黑暗模式:拥抱黑暗面

深色模式近来风靡一时,这是有充分理由的。在弱光条件下,它对眼睛更舒适,并且可以节省 OLED 屏幕的电池寿命。让我们向 Bootstrap 网站添加深色模式切换开关。

实施深色模式

首先,让我们创建一些暗模式变量:

.custom-radio {
  .custom-control-input {
    &:checked ~ .custom-control-label::before {
      background-color: #007bff;
      border-color: #007bff;
    }
    &:checked ~ .custom-control-label::after {
      background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e");
    }
  }
}
登录后复制
登录后复制
登录后复制

现在,让我们添加一个切换按钮:

.custom-select {
  appearance: none;
  background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right .75rem center/8px 10px;
  padding-right: 2.25rem;

  &:focus {
    border-color: #80bdff;
    box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);
  }
}
登录后复制
登录后复制

以及使其工作的 JavaScript:

$spacer: 1rem;
$spacers: (
  0: 0,
  1: $spacer * .25,
  2: $spacer * .5,
  3: $spacer,
  4: $spacer * 1.5,
  5: $spacer * 3,
  6: $spacer * 4,
  7: $spacer * 5
);

@each $breakpoint in map-keys($grid-breakpoints) {
  @include media-breakpoint-up($breakpoint) {
    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
    @each $prop, $abbrev in (margin: m, padding: p) {
      @each $size, $length in $spacers {
        .#{$abbrev}#{$infix}-#{$size} { #{$prop}: $length !important; }
        .#{$abbrev}t#{$infix}-#{$size},
        .#{$abbrev}y#{$infix}-#{$size} {
          #{$prop}-top: $length !important;
        }
        .#{$abbrev}r#{$infix}-#{$size},
        .#{$abbrev}x#{$infix}-#{$size} {
          #{$prop}-right: $length !important;
        }
        .#{$abbrev}b#{$infix}-#{$size},
        .#{$abbrev}y#{$infix}-#{$size} {
          #{$prop}-bottom: $length !important;
        }
        .#{$abbrev}l#{$infix}-#{$size},
        .#{$abbrev}x#{$infix}-#{$size} {
          #{$prop}-left: $length !important;
        }
      }
    }
  }
}
登录后复制
登录后复制

现在您已经有了一个可以记住用户偏好的深色模式!

10.动画集成:让您的网站栩栩如生

最后但并非最不重要的一点是,让我们添加一些微妙的动画,让您的 Bootstrap 网站感觉更加动态和吸引人。

滚动动画

首先,让我们安装 AOS(滚动动画)库:

.text-truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
登录后复制

现在,我们可以向元素添加动画:

.fancy-card {
  transition: transform 0.3s ease, box-shadow 0.3s ease;

  &:hover {
    transform: translateY(-5px);
    box-shadow: 0 4px 15px rgba(0,0,0,0.1);
  }

  .card-img-top {
    transition: opacity 0.3s ease;
  }

  &:hover .card-img-top {
    opacity: 0.8;
  }
}
登录后复制

以上是每个 UI 开发人员都应该知道的 Bootstrap 技巧的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!