jquery - 我可以在 CSS 中制作 Off-Canvas 滑出式菜单吗?

标签 jquery html css twitter-bootstrap

我想制作一个 Canvas 外菜单滑过菜单。我找到了一个很好的示例,但它使用 SCSS,是否可以改用 CSS 创建完全相同的示例?

Codepen demo here:

<div data-off-canvas="true">
<div class="off-canvas-menu">
  <ul class="nav nav-pills nav-stacked">
    <li class="active"><a href="#">Home</a></li>
    <li><a href="#">Profile</a></li>
    <li><a href="#">Messages</a></li>
  </ul>
</div>

<div id="off-body" class="container-fluid">
  <div class="container-inner">
    <div class="container-content">

      <button type="button" class="btn btn-primary btn-sm" data-toggle="off-canvas" data-target="#off-body">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>

      <h1 class="page-header">
        <i class="glyphicon"></i> Simple Off-Canvas 
      </h1>


[data-off-canvas="true"],
.container-fluid,
.container-inner,
.container-info {
 height: 100%;
}

.container-inner {
 display: table;
 width: 90%;
 margin-left: auto;
 margin-right: auto;
}

.container-content {
 display: table-cell;
 vertical-align: middle;
 text-align: center;
}

.page-header {
 font-family: "Bitter";
 font-weight: bold;
 font-size: 64px;
 letter-spacing: -1px;
 border-bottom: 0 none;
 text-shadow: 0 2px 8px darken(#05bb0e, 10%);
}

p.lead {
 font-weight: 300;
}

*:focus { outline: 0 none !important; }

[data-off-canvas="true"] {
 height: 100%;

 &.active {
  overflow-x: hidden;
 }
}

.col-xs-12 > .btn {
 margin-top: 15px;
 padding-left: 8px;
 padding-right: 8px;
}

.icon-bar {
 display: block;
 clear: both;
 width: 23px;
 height: 4px;
 margin-top: 2px;
 margin-bottom: 2px;
 background-color: #fff;
}

.off-canvas-menu {
 @include transition(left 155ms ease-out);
 position: fixed;
 top: 0;
 z-index: 100;
 left: -250px;
 width: 250px;
 height: 100%;
 padding: 10px;
 box-shadow: -1px 0 1px 0 #313131 inset;
 border-right: 1px solid #000;
 background-color: #191919;

 &.active {
  @include transition(left 155ms ease);
  left: 0;
 }
}

.off-canvas-target {
 @include transition(transform 150ms ease);
 @include translate(0, 0);

&.active {
 @include transition(transform 150ms ease);
 @include translate(250px, 0);
 }
}

+function ($) { 'use strict'; 

var OffCanvas = function (element, options) {
this.element = (element) ? element : '[data-toggle="off-canvas"]';
this.options = (options) ? options : this.defaults;

return this;
};

OffCanvas.defaults = {};

OffCanvas.prototype.engage = function () {
var $target = $($(this.element).data('target'));

$target.addClass('off-canvas-target');

$(this.element).on('click', function (event) {
  var offCanvas    = '[data-off-canvas=true]',
      slideTarget  = $(this).data('target'),
      slideMenubar = '.off-canvas-menu';

  event.preventDefault();

  $(offCanvas).toggleClass('active');
  $(slideTarget).toggleClass('active');
  $(slideMenubar).toggleClass('active');

 });
};

最佳答案

代码笔中的 CSS 部分有一个“查看已编译”按钮,它将 SCSS 转换为 CSS。

enter image description here

关于jquery - 我可以在 CSS 中制作 Off-Canvas 滑出式菜单吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29710777/

相关文章:

javascript - 当 div 清空时,Ajax 加载的弹出图像并不总是清除

javascript - 动态页面的disqus api

javascript - 没有提交表单的html5验证错误消息

javascript - 如何让 AngularJS 更新输入值?

javascript - jquery 验证在 ie9、ie8、ie7、ie6 中不起作用

jquery - 下拉菜单不起作用(选项卡焦点)

html - 如果仅在输入字段外单击而不是在填充文本框时输入无效,如何将边框颜色变为红色?

css - 为什么转换顺序很重要?旋转/缩放不会给出与缩放/旋转相同的结果

iphone - 为什么我的表格模糊?

css - 图片下方的 SVG 背景