投稿者「あたい」のアーカイブ

flexboxを使ったレスポンシブ段組み

意外とこういうテンプレート作っておくと便利かもしれないということ。

基本のhtml

col_* の * に2~4の数字を入れるよ。

<div class="col_*">
<div>
ここに内容
</div>
<div>
ここに内容
</div>
<div>
ここに内容
</div>
<div>
ここに内容
</div>
<div>
ここに内容
</div>
<div>
ここに内容
</div>
</div>

2カラム

/* 2カラム */
*, *:before, *:after {
box-sizing: border-box;
}
.col_2{
width: 100%;
display: flex;
display: -ms-flexbox; /* IE10 */
flex-wrap: wrap;
-ms-flex-wrap: wrap; /* IE10 */
background-color: #005693; /* 背景の色 */
color: #FFF; /* 文字の色 */
text-align: center; /* 内容は中央配置 */
}
.col_2 > div{
width: 50%;
padding: 10px;
}
@media screen and (max-width: 640px) {
.col_2 > div{
width: 100%;
}
}

3カラム

/* 3カラム */
*, *:before, *:after {
box-sizing: border-box;
}
.col_3{
width: 100%;
display: flex;
display: -ms-flexbox; /* IE10 */
flex-wrap: wrap;
-ms-flex-wrap: wrap; /* IE10 */
background-color: #005693; /* 背景の色 */
color: #FFF; /* 文字の色 */
text-align: center; /* 内容は中央配置 */
}
.col_3 > div{
width: 33.33333%;
padding: 10px;
}
@media screen and (max-width: 1090px) {
.col_3 > div{
width: 50%;
}
}
@media screen and (max-width: 480px) {
.col_3 > div{
width: 100%;
}
}

4カラム

/* 4カラム */
*, *:before, *:after {
box-sizing: border-box;
}
.col_4{
width: 100%;
display: flex;
display: -ms-flexbox; /* IE10 */
flex-wrap: wrap;
-ms-flex-wrap: wrap; /* IE10 */
background-color: #005693; /* 背景の色 */
color: #FFF; /* 文字の色 */
text-align: center; /* 内容は中央配置 */
}
.col_4 > div{
width: 25%;
padding: 10px;
}
@media screen and (max-width: 1090px) {
.col_4 > div{
width: 33.33333%;
}
}
@media screen and (max-width: 480px) {
.col_4 > div{
width: 50%;
}
}

印刷時のみ有効になるJS

以前書いた印刷時にのみ有効になるスタイルに関連して、印刷時のみ有効になるJSです。
要するに、ブラウザで「印刷ボタン」を押した時に表示されるプレビューを制御します。

印刷する時に不要な要素を削除したり・・って言うのは、cssの@media print でなんとかなりますが、セル結合の制御まではcssでは出来ないのでこれはかなり有効です。

$(window).on('beforeprint', function(event) {

//処理
$("hoge").attr("colSpan","1")//これは印刷時のみ横セル結合を1にする


});

以下は、印刷キャンセルを押した後や印刷を終えた後の処理

$(window).on('afterprint', function(event) {

//処理
$("hoge").attr("colSpan","2")//横セル結合を2にする(戻す)

});

印刷時にのみ有効になるスタイル

印刷時に、ヘッダーをfixedにしてたりすると全部の印刷ページにヘッダーが被って嫌だなってことありますよね。
そういう時にmedia printの中に印刷時にのみ有効にしたいスタイルを記述すると良い感じです。

@media print {
#detail_header {
position: static;
}
}

テーブルを横スクロールさせるよ

色々やり方はありそうでしたが、これが既存のテーブルのスタイルやhtmlを編集せずにシンプルに実装できそうで良かったです。

<div class="sc-table">
<table>
<tbody>
<tr>
<th>・・・</th>
<th>・・・</th>
<th>・・・</th>
</tr>
<tr>
<td>・・・</td>
<td>・・・</td>
<td>・・・</td>
</tr>
<tr>
<td>・・・</td>
<td>・・・</td>
<td>・・・</td>
</tr>
</tbody>
</table>
</div>
.sc-table {
overflow-x: scroll;
white-space: nowrap;
}
/*古いブラウザに対応したい場合*/
.sc-table {
overflow: scroll;
white-space: nowrap;
}

WordPressの下層ディレクトリに静的ページを設置したいとき

覚書

こういうときは大体親固定ページにindex.phpを置いて、下記を記述する

require( dirname( __FILE__ ) . '/../wp-blog-header.php' );

ドメイン/固定ページ名①/固定ページ②/静的サイト.htmlにしたいとき、固定ページ②がうまく表示されない時にはWordPressで使用してるテーマのfunction.phpに下記を記述する

remove_filter('template_redirect', 'redirect_canonical');

WPのposts/カテゴリ/メニューなどのコンテンツだけをDBテーブル移行する

サイトAの

  • 固定ページ
  • 投稿
  • カテゴリー
  • メニュー設定など

をサイトBに複製(上書き)したいとします。

下記の項目テーブルをまずダンプします。(編集するので圧縮しない方が後々楽)
DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT を追加
IF NOT EXISTS を追加
を忘れずに。

  • wp_postmeta
  • wp_posts
  • wp_termmeta
  • wp_terms
  • wp_term_relationships
  • wp_term_taxonomy

そしたら、落としたSQLの「wp_3_postmeta」などの「wp_3_」の部分を複製先の接頭辞に置換します。

これで、インポートすれば見事にメインコンテンツだけ複製できます!

単純にヘッダーの高さを計算してcontentsにmargin-topつける方法

こんな感じです。jQuery3以上を使っている場合は、functionで囲う必要はありません。

$(window).on('load resize', function() {

var h = $('#header').height();

$( '#contents' )
.css({
'margin-top' : h + 'px',
})

});

これはすごいテーブル

すごい。
pecopla.net/web-column/table-design

<table>
<thead>
<tr>
<td class="non"></td>
<th scope="col">内容</th>
<th scope="col">価格(月額)</th>
</tr>
</thead>
<tbody>
<tr>
<th>ベーシックプラン</th>
<td data-label="内容" class="txt">はじめての方向け。ベーシックなお試しプラン</td>
<td data-label="価格" class="price">¥3,000</td>
</tr>
<tr>
<th>カスタムプラン</th>
<td data-label="内容" class="txt">必要なものだけ揃えられるカスタムプラン</td>
<td data-label="価格"class="price">¥4,000</td>
</tr>
<tr>
<th>プレミアムプラン</th>
<td data-label="内容" class="txt">全ておまかせのプレミアムプラン</td>
<td data-label="価格"class="price">¥10,000</td>
</tr>
</tbody>
</table>
body {
font-family: "Open Sans", sans-serif;
line-height: 1.25;
}

table {
border-collapse: collapse;
margin: 0 auto;
padding: 0;
width: 650px;
table-layout: fixed;
}

table tr {
background-color: #e6f2f5;
padding: .35em;
border-bottom: 2px solid #fff;
}
table th,
table td {
padding: 1em 10px 1em 1em;
border-right: 2px solid #fff;
}
table th {
font-size: .85em;
}
table thead tr{
background-color: #167F92;
color:#fff;
}
table tbody th {
background: #78bbc7;
color: #fff;
}
.txt{
text-align: left;
font-size: .85em;
}
.price{
text-align: right;
color: #167F92;
font-weight: bold;
}
.non{
background:#fff
}
@media screen and (max-width: 600px) {
table {
border: 0;
width:100%
}
table th{
background-color: #167F92;
display: block;
border-right: none;
}
table thead {
border: none;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
table tr {
display: block;
margin-bottom: .625em;
}
table td {
border-bottom: 1px solid #bbb;
display: block;
font-size: .8em;
text-align: right;
position: relative;
padding: .625em .625em .625em 4em;
border-right: none;
}

table td::before {
content: attr(data-label);
font-weight: bold;
position: absolute;
left: 10px;
color: #167F92;
}
table td:last-child {
border-bottom: 0;
}
table tbody th {
color: #fff;
}
}

管理画面のカスタム投稿タイプ一覧画面での列追加と順番変更

列追加(この場合はカテゴリー)
これで、カテゴリ―絞り込み機能まで追加できます。

function my_manage_posts_columns_★タクソノミー名★($columns) {
$columns['★タクソノミー名★'] = "カテゴリー";
return $columns;
}
function my_add_column_★タクソノミー名★($column_name, $post_id) {
if( $column_name == '★タクソノミー名★' ) {
$tax = wp_get_object_terms($post_id, '★タクソノミー名★');
$stitle = $tax[0]->name;
}

if ( isset($stitle) && $stitle ) {
echo esc_attr($stitle);
}
}
function my_add_post_taxonomy_restrict_filter() {
global $post_type;
if ( '★カスタム投稿タイプ名★' == $post_type ) {
?>
<select name="★タクソノミー名★">
<option value="">すべてのカテゴリ―</option>
<?php
$terms = get_terms('★タクソノミー名★');
foreach ($terms as $term) { ?>
<option value="<?php echo $term->slug; ?>" <?php if ( $_GET['★タクソノミー名★'] == $term->slug ) { print 'selected'; } ?>><?php echo $term->name; ?></option>
<?php
}
?>
</select>
<?php
}
}
add_filter( 'manage_edit-★カスタム投稿タイプ名★_columns', 'my_manage_posts_columns_★タクソノミー名★' );
add_action( 'manage_★カスタム投稿タイプ名★_posts_custom_column', 'my_add_column_★タクソノミー名★', 10, 2 );
add_action( 'restrict_manage_posts', 'my_add_post_taxonomy_restrict_filter' );

列の順番変更

function sort_custom_columns( $columns ) {
$columns = array(
'cb' => '',
'title' => 'タイトル',
'★タクソノミー名★' => 'カテゴリー',
'author' => '作成者',
'date' => '日付'
);
return $columns;
}
add_filter( 'manage_★カスタム投稿タイプ名★_posts_columns', 'sort_custom_columns' );

カスタムタクソノミーの追加

カスタムタクソノミー(カスタム投稿タイプへのカテゴリ―追加)について。
下記の記述で行えます。
これは、カスタム投稿タイプを追加したfunction記述に内包しましょう。

‘case_cat’:タクソノミーのスラッグ
‘case’:タクソノミーを追加したいカスタム投稿タイプのスラッグ
‘label’,’singular_label’:管理画面の左メニューに出る表示
‘rewrite’:タクソノミーのタームに属する記事一覧をどういうURLで出したいか(アーカイブ?

あとはその時々で調査したい。

register_taxonomy(
'case_cat',
'case',
array(
'hierarchical' => true,
'label' => '事例カテゴリー',
'show_ui' => true,
'query_var' => true,
'rewrite' => true,
'singular_label' => '事例のカテゴリー',
'rewrite' => array('slug' => 'case-study','hierarchical' => true)
)
);