1
0
Fork 0
mirror of https://github.com/twbs/bootstrap.git synced 2022-11-09 12:25:43 -05:00

Offcanvas example update

* Remove plugin file and put JS inline
* Update grid layout to use tablet columns
* Switch from LESS to CSS for transition
* Pad footer sides for better mobile rendering
* Spacing cleanup
This commit is contained in:
Mark Otto 2013-06-19 20:31:03 -07:00
parent b0bece66f2
commit 65ad52060e
2 changed files with 36 additions and 126 deletions

View file

@ -1,100 +0,0 @@
/* ============================================================
* bootstrap-offcanvas.js v3.0.0
* http://twitter.github.com/bootstrap/javascript.html#offcanvas
* ============================================================
* Copyright 2012 Twitter, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* ============================================================ */
/* ============================================================
* This shouldn't be a plugin, because it's too simple.
* BTW, having it as a plugin, makes for a simpler dev cycle.
* ============================================================ */
!function ($) {
"use strict"; // jshint ;_;
/* OFFCANVAS CLASS DEFINITION
* ========================= */
var toggle = '[data-toggle=offcanvas]'
, Offcanvas = function (element) {
var $el = $(element).on('click.offcanvas.data-api', this.toggle)
}
Offcanvas.prototype = {
constructor: Offcanvas
, toggle: function (e) {
var $this = $(this)
, $parent
$parent = $this.parents('.row-offcanvas')
$parent.toggleClass('active')
$this.toggleClass('active')
return false
}
, keydown: function (e) {
$(this).toggle
// TODO
// This should be enough to provide the basic functionality.
// In the future I'd like to have the following behaviour:
//
// * on active via keyboard, give focus to the sidebar
// * while in sidebar: ESC gives back focus to the toggler anchor/button
}
}
/* OFFCANVAS PLUGIN DEFINITION
* ========================== */
var old = $.fn.offcanvas
$.fn.offcanvas = function (option) {
return this.each(function () {
var $this = $(this)
, data = $this.data('offcanvas')
if (!data) $this.data('offcanvas', (data = new Offcanvas(this)))
if (typeof option == 'string') data[option].call($this)
})
}
$.fn.offcanvas.Constructor = Offcanvas
/* OFFCANVAS NO CONFLICT
* ==================== */
$.fn.offcanvas.noConflict = function () {
$.fn.offcanvas = old
return this
}
/* APPLY TO OFFCANVAS ELEMENTS
* =================================== */
$(document)
.on('click.offcanvas.data-api touchstart.offcanvas.data-api' , toggle, Offcanvas.prototype.toggle)
.on('keydown.offcanvas.data-api touchstart.offcanvas.data-api', toggle, Offcanvas.prototype.keydown)
}(window.jQuery);

View file

@ -8,6 +8,10 @@ title: Static navbar template
body {
padding-top: 80px;
}
footer {
padding-left: 15px;
padding-right: 15px;
}
/*
* Off canvas
@ -16,7 +20,9 @@ title: Static navbar template
.row-offcanvas {
position: relative;
overflow: hidden;
.transition(all 0.25s ease-out);
-webkit-transition: all 0.25s ease-out;
-moz-transition: all 0.25s ease-out;
transition: all 0.25s ease-out;
}
.row-offcanvas.active {
overflow: visible;
@ -48,7 +54,6 @@ title: Static navbar template
}
@media screen and (min-width: 320px) and (max-width: 480px) {
.row-offcanvas-right .sidebar-offcanvas {
right: -270px; /* 60px * 4.5 = average iPhones and Android phones */
}
@ -64,13 +69,11 @@ title: Static navbar template
.sidebar-offcanvas {
width: 270px; /* 60px * 4.5 = average iPhones and Android phones */
}
}
/* Landscape phone to tablets
* -------------------------- */
@media screen and (min-width: 481px) and (max-width: 767px) {
.row-offcanvas-right .sidebar-offcanvas {
right: -480px; /* 60px * 8 = Tablets and wider */
}
@ -86,25 +89,32 @@ title: Static navbar template
.sidebar-offcanvas {
width: 480px; /* 60px * 8 = Tablets and wider */
}
}
/* Tablets & above
* ---------------- */
@media screen and (min-width: 768px) {
.row-offcanvas {
position: static;
overflow: visible;
}
.sidebar-offcanvas {
position: static;
}
.btn-offcanvas {
display: none;
}
}
</style>
<script>
$(document).ready(function() {
$('[data-toggle=offcanvas]').click(function() {
$('.row-offcanvas').toggleClass('active');
});
});
</script>
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".nav-collapse">
@ -126,48 +136,48 @@ title: Static navbar template
<div class="container">
<div class="row row-offcanvas row-offcanvas-right">
<div class="col col-lg-9">
<p class="pull-right visible-phone"><a href="#sidebar" class="btn btn-primary btn-offcanvas" data-toggle="offcanvas"><i class="glyphicon glyphicon-resize-horizontal"></i></a></p>
<div class="col-lg-9">
<p class="pull-right hidden-lg">
<a href="#sidebar" class="btn btn-primary btn-offcanvas" data-toggle="offcanvas"><i class="glyphicon glyphicon-resize-horizontal"></i></a>
</p>
<div class="jumbotron">
<h1>Hello, world!</h1>
<p>This is an example to show the potential of an offcanvas layout pattern in Bootstrap. Try some responsive-range viewport sizes to see it in action.</p>
</div>
<div class="row">
<div class="col col-lg-4">
<div class="col-sm-6 col-lg-4">
<h2>Heading</h2>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class="btn" href="#">View details &raquo;</a></p>
<p><a class="btn btn-default" href="#">View details &raquo;</a></p>
</div><!--/span-->
<div class="col col-lg-4">
<div class="col-sm-6 col-lg-4">
<h2>Heading</h2>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class="btn" href="#">View details &raquo;</a></p>
<p><a class="btn btn-default" href="#">View details &raquo;</a></p>
</div><!--/span-->
<div class="col col-lg-4">
<div class="col-sm-6 col-lg-4">
<h2>Heading</h2>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class="btn" href="#">View details &raquo;</a></p>
<p><a class="btn btn-default" href="#">View details &raquo;</a></p>
</div><!--/span-->
</div><!--/row-->
<div class="row">
<div class="col col-lg-4">
<div class="col-sm-6 col-lg-4">
<h2>Heading</h2>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class="btn" href="#">View details &raquo;</a></p>
<p><a class="btn btn-default" href="#">View details &raquo;</a></p>
</div><!--/span-->
<div class="col col-lg-4">
<div class="col-sm-6 col-lg-4">
<h2>Heading</h2>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class="btn" href="#">View details &raquo;</a></p>
<p><a class="btn btn-default" href="#">View details &raquo;</a></p>
</div><!--/span-->
<div class="col col-lg-4">
<div class="col-sm-6 col-lg-4">
<h2>Heading</h2>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class="btn" href="#">View details &raquo;</a></p>
<p><a class="btn btn-default" href="#">View details &raquo;</a></p>
</div><!--/span-->
</div><!--/row-->
</div><!--/span-->
<nav class="col col-lg-3 sidebar-offcanvas" id="sidebar" role="navigation">
<nav class="col-lg-3 sidebar-offcanvas" id="sidebar" role="navigation">
<div class="well sidebar-nav">
<ul class="nav nav-list">
<li class="nav-header">Sidebar</li>
@ -192,4 +202,4 @@ title: Static navbar template
<p>&copy; Company 2012</p>
</footer>
</div><!--/.container-->
</div><!--/.container-->