搜索
首页web前端Bootstrap教程深入浅出Bootstrap中的下拉菜单

深入浅出Bootstrap中的下拉菜单

Jun 22, 2021 am 11:10 AM
bootstrap下拉菜单

本篇文章给大家详细介绍一下Bootstrap中的下拉菜单。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

深入浅出Bootstrap中的下拉菜单

网页交互的时候经常会需要上下文菜单或者隐藏/显示菜单项,Bootstrap默认提供了用于显示链接列表的可切换、有上下文的菜单。而且在各种交互状态下的菜单展示需要和javascript插件配合才能使用。【相关推荐:《bootstrap教程》】

使用方法

  在使用Bootstrap框架的下拉菜单时,必须调用Bootstrap框架提供的bootstrap.js文件。当然,如果使用的是未编译版本,在js文件夹下能找到一个名为“dropdown.js”的文件,也可以调用这个js文件

  因为Bootstrap的组件交互效果都是依赖于jQuery库写的插件,所以在使用bootstrap.js之前一定要先加载jquery.js才会产生效果

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</body>
</html>

基本用法

  在使用Bootstrap框架中的下拉菜单组件时,其结构运用的正确与否非常的重要,如果结构和类名未使用正确,直接影响组件是否能正常运用

  1、使用一个名为“dropdown”的容器包裹了整个下拉菜单元素

c0a838506a57d6efb82c3faebdcfa64e16b28748ea4df4d9c2150843fecfba68

  2、使用了一个bb9345e55eb71822850ff156dfde57c8按钮做为父菜单,并且定义类名“dropdown-toggle”和自定义“data-toggle”属性,且值必须和最外容器类名一致

8af15fa9ce0b1cee92d5ee57b078822f

  3、下拉菜单项使用一个ul列表,并且定义一个类名为“dropdown-menu”

ae363fd8bc2e4ee3b3446338ba23f464
<div class="dropdown">
  <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
    Dropdown
    <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
    <li><a href="#">Action</a></li>
    <li><a href="#">Another action</a></li>
    <li><a href="#">Something else here</a></li>
  </ul>
</div>

1.gif

  4、通过为下拉菜单的父元素设置 .dropup 类,可以让菜单向上弹出(默认是向下弹出的)

<div class="dropup">
  <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
    Dropup
    <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
    <li><a href="#">Action</a></li>
    <li><a href="#">Another action</a></li>
    <li><a href="#">Something else here</a></li>
  </ul>
</div>

2.gif

原理分析

  Bootstrap框架中的下拉菜单组件,其下拉菜单项默认是隐藏的,因为“dropdown-menu”默认样式设置了“display:none”;当用户点击父菜单项时,下拉菜单将会被显示出来;当用户再次点击时,下拉菜单将继续隐藏

.dropdown-menu {
  position: absolute;/*设置绝对定位,相对于父元素div.dropdown*/
  top: 100%;/*让下拉菜单项在父菜单项底部,如果父元素不设置相对定位,该元素相对于body元素*/
  left: 0;
  z-index: 1000;/*让下拉菜单项不被其他元素遮盖住*/
  display: none;/*默认隐藏下拉菜单项*/
  float: left;
  min-width: 160px;
  padding: 5px 0;
  margin: 2px 0 0;
  font-size: 14px;
  list-style: none;
  background-color: #fff;
  background-clip: padding-box;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, .15);
  border-radius: 4px;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
  box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
}

【实现原理】

  1、Dropdown插件在网页加载的时候,对所有带有data-toggle="dropdown"样式的元素进行事件绑定

  2、用户单击带有data-toggle="dropdown"样式的链接或按钮时,触发javascript事件代码

  3、javascript事件代码在父容器上加一个.open样式

  4、默认隐藏的.dropdown-menu菜单在外部有了.open样式后,即可显示出来,从而达到预期的效果

  5、当用户再次点击时,“p.dropdown”容器中的类名“open”又会被移除

.open > .dropdown-menu {
  display: block;
}

【其他用法】

  还有一个有趣的用法,是触发元素可以放在菜单的父容器的外部

  但是,这种用法有两点需要注意

  1、要设置父容器的id值

  2、要设置触发元素的data-toggle属性和data-target属性,data-target属性值是#id

<button class="btn dropdown-toggle" type="button" data-toggle="dropdown" data-target="#dropdown1">外部触发器</button>
<div class="dropdown" id="dropdown1">
    <ul class="dropdown-menu" role="menu" aria-labelledby="tutorial">
        <li role="presentation"><a href="##">HTML</a></li>
        <li role="presentation"><a href="##">CSS</a></li>
        <li role="presentation"><a href="##">javascript</a></li>
    </ul>
</div>

3.gif

扩展用法

【分隔线】

  在Bootstrap框架中的下拉菜单提供了下拉分隔线,假设下拉菜单有两个组,那么组与组之间可以通过添加一个空的25edfb22a4f469ecb59f1190150159c6,并且给这个25edfb22a4f469ecb59f1190150159c6添加类名“divider”来实现添加下拉分隔线的功能

.dropdown-menu .divider {
  height: 1px;
  margin: 9px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
<li role="separator" class="divider"></li>

4.gif

【菜单标题】

  在任何下拉菜单中均可通过添加标题来标明一组动作 

<li class="dropdown-header">Dropdown header</li>
.dropdown-header {
  display: block;
  padding: 3px 20px;
  font-size: 12px;
  line-height: 1.42857143;
  color: #999;
}
<div class="dropdown">
  <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
    Dropdown
    <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
    <li role="presentation" class="dropdown-header">第一部分菜单头部</li>
    <li role="presentation"><a role="menuitem" tabindex="-1" href="#">下拉菜单项</a></li>
    <li role="presentation"><a role="menuitem" tabindex="-1" href="#">下拉菜单项</a></li>
    <li role="presentation" class="divider"></li>
    <li role="presentation" class="dropdown-header">第二部分菜单头部</li>
    <li role="presentation"><a role="menuitem" tabindex="-1" href="#">下拉菜单项</a></li>
  </ul>
</div>

5.gif

【对齐方式】

  Bootstrap框架中下拉菜单默认是左对齐,如果想让下拉菜单相对于父容器右对齐时,可以在“dropdown-menu”上添加一个“dropdown-menu-right”类名 

.dropdown-menu-right {
  right: 0;
  left: auto;
}

  由于b05e51e1f0e3a705cc222fb9de3565dd默认是块级元素,撑满父级宽度。这里,需要为该元素设置inline-block和margin-left,使其内容撑开宽度,且距离左侧有一定距离

    display: inline-block;
    margin-left: 60px;
<div class="dropdown" style="display: inline-block;margin-left: 60px;">
  <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
    Dropdown
    <span class="caret"></span>
  </button>
  <ul class="dropdown-menu dropdown-menu-right" role="menu" aria-labelledby="dropdownMenu1">
    <li role="presentation"><a role="menuitem" tabindex="-1" href="#">下拉菜单项</a></li>
    <li role="presentation"><a role="menuitem" tabindex="-1" href="#">下拉菜单项</a></li>
    <li role="presentation"><a role="menuitem" tabindex="-1" href="#">下拉菜单项</a></li>
    <li role="presentation" class="divider"></li>
    <li role="presentation"><a role="menuitem" tabindex="-1" href="#">下拉菜单项</a></li>
  </ul>
</div>

6.gif

【菜单项状态】

  下拉菜单项的默认的状态有悬浮状态(:hover)和焦点状态(:focus)

.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
  color: #262626;
  text-decoration: none;
  background-color: #f5f5f5;
}

  下拉菜单项除了上面两种状态,还有当前状态(.active)和禁用状态(.disabled)。这两种状态使用方法只需要在对应的菜单项上添加对应的类名

c0a838506a57d6efb82c3faebdcfa64e
  1172180f0ea09fa48126f1bf9c16d1a6
    Dropdown
    a11c08f61adc2d33c8f8db60e406954354bdf357c58b8a65c66d7c19c8e4d114
  65281c5ac262bf6d81768915a4a77ac0
  f2d98710ffe286210bb25d6dcee36a5c
    556e13e9c9f7f01f9fb88f9dc143761412127e75e1ed440cc428464f13332ecd下拉菜单项5db79b134e9f6b82c0b36e0489ee08edbed06894275b65c1ab86501b08a632eb
    17107faed89a3c9827b91a8116cd378012127e75e1ed440cc428464f13332ecd下拉菜单项5db79b134e9f6b82c0b36e0489ee08edbed06894275b65c1ab86501b08a632eb
    17107faed89a3c9827b91a8116cd378012127e75e1ed440cc428464f13332ecd下拉菜单项5db79b134e9f6b82c0b36e0489ee08edbed06894275b65c1ab86501b08a632eb
    34180452588631f7294f6e20e4d7d79ebed06894275b65c1ab86501b08a632eb
    9e19533ed9cabe256346eae338ee3b4412127e75e1ed440cc428464f13332ecd下拉菜单项5db79b134e9f6b82c0b36e0489ee08edbed06894275b65c1ab86501b08a632eb
  929d1f5ca49e04fdcb27f9465b944689
16b28748ea4df4d9c2150843fecfba68

7.gif

JS触发

  和模态弹出窗一样,Bootstrap框架中的下拉菜单也支持JavaScript方法触发下拉菜单显示。但是,要特点注意的是,即使使用JS触发,也不能去掉触发元素的data-toggle="dropdown"

<div class="dropdown">
    <button class="btn dropdown-toggle" data-toggle="dropdown" type="button">触发器</button>
    <ul class="dropdown-menu" role="menu" aria-labelledby="tutorial">
        <li role="presentation"><a href="##">HTML</a></li>
        <li role="presentation"><a href="##">CSS</a></li>
        <li role="presentation"><a href="##">javascript</a></li>
    </ul>
</div>
<script>
;$(function(){
    $(&#39;.dropdown-toggle&#39;).dropdown()
});
</script>

8.gif

【toggle】

  和Modal一样,dropdown也接收字符串作为参数进行传递,参数可以是"toggle"

  但是,这非常不好用。每次单击都要两次toggle,就会一直是一个不变的状态。所以,一般情况下,使用不带参数的方法。就算需要使用参数“toggle”,也建议使用jQuery的one方法 

$(".dropdown-toggle").one("click",function(){
    $(this).dropdown("toggle");
})

【事件订阅】

  与Modal类似,下拉菜单支持4种类型的事件订阅,分别对应下拉菜单的弹出前、弹出后、关闭前、关闭后

show.bs.dropdown 在show方法调用时立即触发(尚未显示之前)
shown.bs.dropdown 在下拉菜单完全显示给用户之后(并且等CSS动画完成之后)触发
hide.bs.dropdown 在hide方法调用时(但还未关闭隐藏)立即触发
hidden.bs.dropdown 在下拉菜单完全隐藏之后(并且等CSS动画完成之后)触发
<div class="dropdown">
    <button class="btn dropdown-toggle" data-toggle="dropdown" type="button">触发器</button>
    <ul class="dropdown-menu" role="menu" aria-labelledby="tutorial">
        <li role="presentation"><a href="##">HTML</a></li>
        <li role="presentation"><a href="##">CSS</a></li>
        <li role="presentation"><a href="##">javascript</a></li>
    </ul>
</div>
<script>
;$(function(){
    $(&#39;.dropdown&#39;).on(&#39;show.bs.dropdown&#39;,function(){
        $(&#39;.dropdown-toggle&#39;).html(&#39;关闭&#39;);
    });
    $(&#39;.dropdown&#39;).on(&#39;hide.bs.dropdown&#39;,function(){
        $(&#39;.dropdown-toggle&#39;).html(&#39;打开&#39;);
    });
    
});
</script>

9.gif

JS源码

【1】IIFE

  使用立即调用函数,防止插件内代码外泄,从而形成一个闭环,并且只能从jQuery的fn里进行扩展

+function ($) {
    //使用es5严格模式
    &#39;use strict&#39;;
    //
}(window.jQuery);

【2】初始设置

//弹出下拉菜单时的蒙版样式
  var backdrop = &#39;.dropdown-backdrop&#39;
  //dropdown触发元素的自定义属性
  var toggle   = &#39;[data-toggle="dropdown"]&#39;
  var Dropdown = function (element) {
    //插件类函数定义,一旦触发,就在click事件上绑定toggle,所以不能再用自定义代码进行toggle了
    $(element).on(&#39;click.bs.dropdown&#39;, this.toggle)
  }
  //版本号为&#39;3.3.7&#39;
  Dropdown.VERSION = &#39;3.3.7&#39;

【3】插件核心代码

//获取下拉菜单的父元素容器
  function getParent($this) {
    //获取触发元素的&#39;data-target&#39;特性值,表示下拉菜单的父元素容器的选择器
    var selector = $this.attr(&#39;data-target&#39;)  
    //如果触发元素没有设置&#39;data-target&#39;
    if (!selector) {
      //获取触发元素的&#39;href&#39;特性值,表示下拉菜单的父元素容器的选择器
      selector = $this.attr(&#39;href&#39;)
      //该值是所弹出元素的id值
      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, &#39;&#39;) // strip for ie7
    }
    //通过选择器,来获取下拉菜单的父元素容器
    var $parent = selector && $(selector)
    //如果找到,说明触发元素确实在下拉菜单外部,则返回找到的下拉菜单的父元素容器即可
    //如果没有找到,说明触发元素在下拉菜单内部,则返回它的直接父级元素
    return $parent && $parent.length ? $parent : $this.parent()
  }

  //关闭所有的下拉菜单
  function clearMenus(e) {
    //如果点击的是鼠标右键,则直接返回
    if (e && e.which === 3) return
    //删除用于移动设备的蒙版  
    $(backdrop).remove()
    //根据选择器,遍历所有的dropdown标记,然后全部关闭
    $(toggle).each(function () {
      var $this         = $(this)
      var $parent       = getParent($this)
      var relatedTarget = { relatedTarget: this }
      //如果下拉菜单的父元素容器没有open类名,则直接返回
      if (!$parent.hasClass(&#39;open&#39;)) return
      //如果触发了鼠标单击事件,并且鼠标事件的目标元素是input或textarea,则直接返回
      if (e && e.type == &#39;click&#39; && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
      //关闭前,触发hide事件
      $parent.trigger(e = $.Event(&#39;hide.bs.dropdown&#39;, relatedTarget))
      //如果阻止了默认行为,则直接返回
      if (e.isDefaultPrevented()) return
      $this.attr(&#39;aria-expanded&#39;, &#39;false&#39;)
      //关闭后,触发hidden事件
      $parent.removeClass(&#39;open&#39;).trigger($.Event(&#39;hidden.bs.dropdown&#39;, relatedTarget))
    })
  }
  
  //控制下拉菜单的打开、关闭操作
  Dropdown.prototype.toggle = function (e) {
    var $this = $(this)
    //如果有禁用标记,则不处理
    if ($this.is(&#39;.disabled, :disabled&#39;)) return
    //获取下拉菜单的父元素容器
    var $parent  = getParent($this)
    //判断下拉菜单的父元素容器是否有open样式
    var isActive = $parent.hasClass(&#39;open&#39;)
    //关闭所有的下拉菜单
    clearMenus()
    //如果是,在clearMenus阶段已经关闭了,所以不需要再次关闭
    //如果不是,说明默认是关闭状态,则需要展开下拉菜单
    if (!isActive) {
      //如果是移动设置,则使用dropdown-backdrop样式,因为移动设备不支持click单击委托
      if (&#39;ontouchstart&#39; in document.documentElement && !$parent.closest(&#39;.navbar-nav&#39;).length) {       
        $(document.createElement(&#39;div&#39;))
          .addClass(&#39;dropdown-backdrop&#39;)
          .insertAfter($(this))
          .on(&#39;click&#39;, clearMenus)
      }
      var relatedTarget = { relatedTarget: this }
      //展开下拉菜单前,触发show事件
      $parent.trigger(e = $.Event(&#39;show.bs.dropdown&#39;, relatedTarget))
      //如果阻止了默认行为,则直接返回
      if (e.isDefaultPrevented()) return

      $this
        //设置focus样式
        .trigger(&#39;focus&#39;)
        .attr(&#39;aria-expanded&#39;, &#39;true&#39;)

      $parent
        //设置open样式
        .toggleClass(&#39;open&#39;)
        //展开下拉菜单后,触发shown事件
        .trigger($.Event(&#39;shown.bs.dropdown&#39;, relatedTarget))
    }
    return false
  }

  //利用键盘控制下拉菜单
  Dropdown.prototype.keydown = function (e) {
    //如果按键不是esc、或上下方向键、或空格键,或者目标元素是input或textarea控件,则忽略处理
    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
    var $this = $(this)
    //阻止默认行为及冒泡
    e.preventDefault()
    e.stopPropagation()
    //如果有禁用标记,则不做处理
    if ($this.is(&#39;.disabled, :disabled&#39;)) return
    //获取下拉菜单的父元素容器
    var $parent  = getParent($this)
    //判断父元素是否有open样式
    var isActive = $parent.hasClass(&#39;open&#39;)
    //如果有open样式并且按键不是向下箭头,或者没有open样式并且按键是向下箭头,也打开下拉菜单
    if (!isActive && e.which != 27 || isActive && e.which == 27) {
      //如果按下向下箭头,则给触发元素加上焦点
      if (e.which == 27) $parent.find(toggle).trigger(&#39;focus&#39;)
      //触发单击事件
      return $this.trigger(&#39;click&#39;)
    }
    //返回可以利用箭头选择的下拉菜单项
    //必须是可见的a链接,并且不包括分隔符
    var desc = &#39; li:not(.disabled):visible a&#39;
    var $items = $parent.find(&#39;.dropdown-menu&#39; + desc)
    //如果没有,则不做处理
    if (!$items.length) return
    //找出当前处理焦点状态的第一个下拉菜单项的索引
    var index = $items.index(e.target)
    //按向上箭头,index-1
    if (e.which == 38 && index > 0)                 index--        
    //按向下箭头,index+1 
    if (e.which == 40 && index < $items.length - 1) index++      
    //当index为-1时,置为0  
    if (!~index)                                    index = 0
    //给所选择的菜单项设置焦点
    $items.eq(index).trigger(&#39;focus&#39;)
  }

【4】jQuery插件定义

function Plugin(option) {
    //根据选择器,遍历所有符合规则的元素
    return this.each(function () {
      var $this = $(this)
      //获取自定义属性bs.dropdown的值
      var data  = $this.data(&#39;bs.dropdown&#39;)
      //如果值不存在,则将Dropdown实例设置为bs.dropdown值
      if (!data) $this.data(&#39;bs.dropdown&#39;, (data = new Dropdown(this)))
      //如果option传递了string,则表示要执行某个方法  
      if (typeof option == &#39;string&#39;) data[option].call($this)
    })
  }

  var old = $.fn.dropdown
  //保留其他库的$.fn.modal代码(如果定义的话),以便在noConflict之后可以继续使用该老代码
  $.fn.dropdown             = Plugin
  //重设插件构造器,可以通过该属性获取插件的真实类函数
  $.fn.dropdown.Constructor = Dropdown

【5】防冲突处理

$.fn.dropdown.noConflict = function () {
    //恢复以前的旧代码
    $.fn.dropdown = old
    //将$.fn.dropdown.noConflict()设置为Bootstrap的Dropdown插件
    return this
  }

【6】绑定触发事件

$(document)
    //为声明式的HTML绑定单击事件,在单击以后先关闭所有的下拉菜单
    .on(&#39;click.bs.dropdown.data-api&#39;, clearMenus)
    //如果内部有form元素,则阻止冒泡,不做其他处理
    .on(&#39;click.bs.dropdown.data-api&#39;, &#39;.dropdown form&#39;, function (e) { e.stopPropagation() })
    //绑定单击事件,执行toggle()方法
    .on(&#39;click.bs.dropdown.data-api&#39;, toggle, Dropdown.prototype.toggle)
    //绑定键盘keydown事件,执行keydown()方法
    .on(&#39;keydown.bs.dropdown.data-api&#39;, toggle, Dropdown.prototype.keydown)
    //为dropdown-menu绑定键盘keydown事件,执行keydown()方法
    .on(&#39;keydown.bs.dropdown.data-api&#39;, &#39;.dropdown-menu&#39;, Dropdown.prototype.keydown)

更多编程相关知识,请访问:编程入门!!

以上是深入浅出Bootstrap中的下拉菜单的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:博客园。如有侵权,请联系admin@php.cn删除
Bootstrap的目的:建立一致且有吸引力的网站Bootstrap的目的:建立一致且有吸引力的网站Apr 19, 2025 am 12:07 AM

Bootstrap的主要用途是帮助开发者快速构建响应式、移动优先的网站。其核心功能包括:1.响应式设计,通过网格系统实现不同设备的布局调整;2.预定义组件,如导航栏和模态框,确保美观和跨浏览器兼容性;3.支持自定义和扩展,使用Sass变量和mixins调整样式。

Bootstrap与其他框架:比较概述Bootstrap与其他框架:比较概述Apr 18, 2025 am 12:06 AM

Bootstrap优于TailwindCSS、Foundation和Bulma,因为它易用且快速开发响应式网站。1.Bootstrap提供丰富的预定义样式和组件库。2.其CSS和JavaScript库支持响应式设计和交互功能。3.适合快速开发,但自定义样式可能较复杂。

在React中集成引导样式:方法和技术在React中集成引导样式:方法和技术Apr 17, 2025 am 12:04 AM

在React项目中整合Bootstrap可以通过两种方法:1)使用CDN引入,适合小型项目或快速原型设计;2)使用npm包管理器安装,适用于需要深度定制的场景。通过这些方法,你可以在React中快速构建美观且响应式的用户界面。

React的引导:优势和最佳实践React的引导:优势和最佳实践Apr 16, 2025 am 12:17 AM

将Bootstrap集成到React项目中的优势包括:1)快速开发,2)一致性和可维护性,3)响应式设计。通过直接引入CSS文件或使用React-Bootstrap库,可以在React项目中高效使用Bootstrap的组件和样式。

Bootstrap:网络框架的快速指南Bootstrap:网络框架的快速指南Apr 15, 2025 am 12:10 AM

Bootstrap是由Twitter开发的框架,帮助快速搭建响应式、移动优先的网站和应用。1.易用性和丰富组件库使开发更快。2.庞大社区提供支持和解决方案。3.通过CDN引入并使用类名控制样式,如创建响应式网格。4.可自定义样式和扩展组件。5.优点包括快速开发和响应式设计,缺点是样式一致性和学习曲线。

打破bootstrap:是什么以及为什么重要打破bootstrap:是什么以及为什么重要Apr 14, 2025 am 12:05 AM

Bootstrapisafree,开放式frameworkthatsimplifiesRessiveandMobile-firstwebsitedEvelvelopment.itofferspre-styledComponentsAndAgridSystem,流化inthiningthecreationofaesthethetshethetshetshetshetshetshetshetshetshetshethetshethet interpleaseansing和Runctinctionalwebdesigns。

Bootstrap:使网页设计更容易Bootstrap:使网页设计更容易Apr 13, 2025 am 12:10 AM

Bootstrap让网页设计更容易的原因是其预设组件、响应式设计和丰富的社区支持。1)预设组件库和样式让开发者无需编写复杂的CSS代码;2)内置网格系统简化了响应式布局的创建;3)社区支持提供了丰富的资源和解决方案。

Bootstrap的影响:加速网络开发Bootstrap的影响:加速网络开发Apr 12, 2025 am 12:05 AM

Bootstrap加速了Web开发,通过提供预定义的样式和组件,开发者可以快速搭建响应式网站。1)它缩短了开发时间,例如在项目中几天内完成基本布局。2)通过Sass变量和mixins,Bootstrap允许定制样式以满足特定需求。3)使用CDN版本可以优化性能,提高加载速度。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境