<button data-toggle="tooltip" type="button" disabled="disabled" title="このデータは削除できません" class="btn"></button>
↓
<div class="button-wrapper" data-toggle="tooltip">
<button data-toggle="tooltip" type="button" disabled="disabled" title="このデータは削除できません" class="btn"></button>
</div>
<style>
.tooltip.show {
opacity: 0.95;
}
.tooltip .tooltip-inner {
font-size: 12px;
color: red;
background-color: #fff;
border: solid 1px #333;
opacity: 1.0;
}
/* disabled な button に tooltipを適用させる */
.button-wrapper {
display: inline-block;
}
.button-wrapper .btn:disabled {
pointer-events: none;
}
</style>
div タグに title を自動的にセットする命令を加えます
<script>
$(function () {
$('.button-wrapper').attr('title', $('.button-wrapper button').attr('title') ); // divタグに titleをセットする
$('[data-toggle="tooltip"]').tooltip();
})
</script>
<div class=”d-none d-sm-block”>
スマホでは消えます
</div>
<div class=”d-block d-sm-none”>
PCでは消えて、スマホのみ表示されます
</div>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
.container {
min-width: 1000px !important;
max-width: 1000px !important;
}
<button type="button" class="btn btn-primary btn-lg " id="load" data-loading-text="<i class='fa fa-circle-o-notch fa-spin'></i> データ送信中...">Submit Order</button>
$('.btn').on('click', function() {
var $this = $(this);
$this.button('loading');
setTimeout(function() {
$this.button('reset');
}, 8000);
});
使い方
<script src="//cdnjs.cloudflare.com/ajax/libs/holder/2.9.6/holder.js"></script>
幅 : 350px
高さ : 250px
の画像を表示する
<img data-src="holder.js/350x250" >
幅 : 100%
高さ : 80px
の画像を表示する
<img data-src="holder.js/100px350" >
↓ このように画像サイズが表示されます。
http://alfredobarron.github.io/smoke/
・アラート(表示後 xx秒で自動的に消えるやつ + 消すボタン付き)
・確認ダイアログ
・パネル(折りたたみ、フルスクリーン)
・パスワードを隠す、表示する
・(あまり使いませんが)フォームバリデーション
などがあります。
<div class="mx-auto" style="width: 200px;">
Centered element
</div>
https://v4-alpha.getbootstrap.com/utilities/spacing/#horizontal-centering
<div class="center-block">
Centered element
</div>
cssクラス table_border_radius を作成してテーブルに割り当てます。
<table class="table table-bordered table_border_radius">
<tr>
<td>TEST</td>
<td>テストデータです。</td>
<td>テストデータです。</td>
</tr>
<tr>
<td>TEST</td>
<td>テストデータです。</td>
<td>テストデータです。</td>
</tr>
<tr>
<td>TEST</td>
<td>テストデータです。</td>
<td>テストデータです。</td>
</tr>
</table>
Bootstrap4でテーブルを角丸表示させるCSS
.table_border_radius {
border: 1px solid red;
border-radius: 5px;
border-spacing: 0;
border-collapse: separate;
}
.table_border_radius tr td {
border: none;
border-bottom: 1px solid black;
border-right: 1px solid black;
}
.table_border_radius tr td:first-child {
border-left: none;
}
.table_border_radius tr td:last-child {
border-right: none;
}
.table_border_radius tr:first-child td {
border-top: none;
}
.table_border_radius tr:last-child td {
border-bottom: none;
}
TEST | テストデータです。 | テストデータです。 |
TEST | テストデータです。 | テストデータです。 |
TEST | テストデータです。 | テストデータです。 |
<div id="sampleCarousel" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li class="active" data-target="#sampleCarousel" data-slide-to="0"></li>
<li data-target="#sampleCarousel" data-slide-to="1"></li>
<li data-target="#sampleCarousel" data-slide-to="2"></li>
</ol>
<div class="carousel-inner" role="listbox">
<div class="item active">
<img src="./001.jpg" alt="写真1">
</div>
<div class="item">
<img src="./002.jpg" alt="写真1">
</div>
<div class="item">
<img src="./003.jpg" alt="写真1">
</div>
</div>
<a class="left carousel-control" href="#sampleCarousel" role="button" data-slide="prev">
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
<span class="sr-only">前へ</span>
</a>
<a class="right carousel-control" href="#sampleCarousel" role="button" data-slide="next">
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
<span class="sr-only">次へ</span>
</a>
</div>
// スライドの停止
function stop_slide() {
jQuery('#sampleCarousel').carousel('pause');
alert('スライドを停止しました');
}
// 任意の画像へ移動
function carousel_move(no) {
jQuery('#sampleCarousel').carousel(no);
}
既存の 非bootstrap 環境で作成されたwebサイトに対し、後から Bootstrapの部品を入れたい場合があります。
この時<head>タグでbootstrapを読み込んでしまうと<body>タグ全体に Bootstrapのcssスタイルが適用され 、
グローバルナビゲーションなどのレイアウトが崩れる可能性があります。
そこで任意のクラス内だけbootstrapのcssstyleを適用できれば既存のナビゲーションが崩れることはありません
こちらにとても簡単な方法で クラス内だけ Bootstrap を適用する方法を採用されている方がいます
特定のdiv要素の中だけBootstrapを適用する - Qiita
考え方としてはとてもシンプルで scss で任意のクラスを作成してその中に bootstrap.css を全部取り込んでしまうというやり方です。
(賢いですね。やり方はこちら ↓ )
https://pgmemo.tokyo/data/filedir/1178_1.css?975
これで bootstrapクラス内だけ Bootstrapのcssが適用されます。
<div class="bootstrap">
・・・・・・・・・・
</div>
mv bootstrap.css bootstrap.scss
下記の内容で mybootstrap.scss を作成します。
.bootstrap {
@import "bootstrap"
}
npm install -g node-sass
node-sass my_bootstrap.scss my_bootstrap.css
これで bootstrapクラス内だけ Bootstrapのcssが適用されます。
<div class="bootstrap">
・・・・・・・・・・
</div>
http://0-oo.net/sbox/javascript/google-calendar-holidays
こちらのスクリプトがとてもよくできているのでありがたく使わせていただきます。
jQuery UI Datepickerに祝日を表示するデモ
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.js"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.css"/>
<script src="https://g.0-oo.net/gcalendar-holidays.js"></script>
<style>
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active, a.ui-button:active, .ui-button:active, .ui-button.ui-state-active:hover {
color: white !important;
background-color: rgb(0, 127, 255) !important;
}
</style>
<input type="text" id="test">
<script>
$(function() {
var months = ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"];
$("#test").datepicker({
prevText: '前月',
nextText: '次月',
// changeYear: true,
// changeMonth: true,
yearSuffix: "年",
showMonthAfterYear: true,
monthNames: months,
monthNamesShort: months,
firstDay: 1,
dayNamesMin: ["日", "月", "火", "水", "木", "金", "土"],
showButtonPanel: true,
currentText: '今日',
closeText: '閉じる',
dateFormat: "yy/m/d"
});
$("#test").focus();
});
</script>
bootstrapにはbootstrap datepicker と言うのがありますが 無視してjQuery datepicker を使用する方が応用がきくのでおすすめです。
・bootstrap版が使いたい場合はこちらからどうぞ
https://github.com/tempusdominus/bootstrap-4
・bootstrap非依存版
https://github.com/tempusdominus/datetimepicker
bootstrapのタブはそのページをリロードしたり次のページに行って戻ってきたりするとデフォルトの状態に戻されています。
次のようにしてそこでクッキーに保存してタグの状態を記憶させるようにします。
ファイル bootstrap_save_tab.js を次のような内容で保存する
/**
* Handles 'Bootstrap' package.
*
* @namespace bootstrap_
*/
/**
* @var {String}
*/
var bootstrap_uri_to_tab_key = 'bootstrap_uri_to_tab';
/**
* @return {String}
*/
function bootstrap_get_uri()
{
return window.location.href;
}
/**
* @return {Object}
*/
function bootstrap_load_tab_data()
{
var uriToTab = localStorage.getItem(bootstrap_uri_to_tab_key);
if (uriToTab) {
try {
uriToTab = JSON.parse(uriToTab);
if (typeof uriToTab != 'object') {
uriToTab = {};
}
} catch (err) {
uriToTab = {};
}
} else {
uriToTab = {};
}
return uriToTab;
}
/**
* @param {Object} data
*/
function bootstrap_save_tab_data(data)
{
localStorage.setItem(bootstrap_uri_to_tab_key, JSON.stringify(data));
}
/**
* @param {String} href
*/
function bootstrap_save_tab(href)
{
var uri = bootstrap_get_uri();
var uriToTab = bootstrap_load_tab_data();
uriToTab[uri] = href;
bootstrap_save_tab_data(uriToTab);
}
/**
*
*/
function bootstrap_restore_tab()
{
var uri = bootstrap_get_uri();
var uriToTab = bootstrap_load_tab_data();
if (uriToTab.hasOwnProperty(uri) &&
$('[href="' + uriToTab[uri] + '"]').length) {
} else {
uriToTab[uri] = $('a[data-toggle="tab"]:first').attr('href');
}
if (uriToTab[uri]) {
$('[href="' + uriToTab[uri] + '"]').tab('show');
}
}
$(document).ready(function() {
if ($('.nav-tabs').length) {
// for bootstrap 3 use 'shown.bs.tab', for bootstrap 2 use 'shown' in the next line
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
bootstrap_save_tab($(this).attr('href'));
});
bootstrap_restore_tab();
}
});
bootstrap.min.js , jquery.cookie.min.js とともに読み込ませます
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
<script src="./bootstrap_save_tab.js"></script>
以上です。 これだけでbootstrapを使ったページのタブを自動的に記憶してくれるようになります。
URLの最後の #tab1 などでタブを切り替えるには 次のようにします
html
<ul class="nav nav-tabs">
<li ><a id="id_tab1" href="#tab1primary" data-toggle="tab">タブ1</a></li>
<li><a id="id_tab2" href="#tab2primary" data-toggle="tab">タブ2</a></li>
<li><a id="id_tab3" href="#tab3primary" data-toggle="tab">タブ3</a></li>
<li><a id="id_tab4" href="#tab4primary" data-toggle="tab">タブ4</a></li>
</ul>
javascript
$(function(){
if (location.hash == '#tab1'){
setTimeout( function() {
$('.nav-tabs a[href="#tab1primary"]').tab('show');
}, 500 );
} else if (location.hash == '#tab2'){
setTimeout( function() {
$('.nav-tabs a[href="#tab2primary"]').tab('show');
}, 500 );
} else if (location.hash == '#tab3'){
setTimeout( function() {
$('.nav-tabs a[href="#tab3primary"]').tab('show');
}, 500 );
} else if (location.hash == '#tab4'){
setTimeout( function() {
$('.nav-tabs a[href="#tab4primary"]').tab('show');
}, 500 );
}
});
Bootstrap4を使用しているサイトでメディアクエリを追加する場合の記述は以下のようになります。
Bootstrapではデフォルトで次のように画面サイズが決められています
識別子 | 画面サイズ | デバイス |
---|---|---|
xs | 575px以下 | モバイル(縦向き) |
sm | 576px 〜 767px | モバイル(横向き) |
md | 768px 〜 991px | タブレット |
lg | 992px 〜 1199px | PC |
xl | 1200px 以上 | PC(大画面) |
cssのメディアクエリは次のように記述します。
@media (max-width: 575.98px) {
.my-class {
// cssプロパティをここに記述
}
}
@media (min-width: 576px) and (max-width: 767.98px) {
.my-class {
// cssプロパティをここに記述
}
}
@media (min-width: 768px) and (max-width: 991.98px) {
.my-class {
// cssプロパティをここに記述
}
}
@media (min-width: 992px) and (max-width: 1199.98px) {
.my-class {
// cssプロパティをここに記述
}
}
@media (min-width: 1200px) {
.my-class {
// cssプロパティをここに記述
}
}