サポート » 使い方全般 » レスポンシブサイトのcssについて

  • 解決済 mayui

    (@mayui)


    初めてwordpressを使用します。
    htmlとcssでのサイト制作は経験有です。

    今回練習で動的なページを制作したく、wordpressを使用してデザインを始めました。
    制作したいwebページはレスポンシブでウィンドウ幅に合わせてcssを切り替えるといったものです。

    style.cssというcssを作ればcssが読み込まれることはわかりました。
    問題はその他のcssです。
    cssフォルダを作成し、そこから様々なcssを呼び出したいのです。

    cssというフォルダを作ってその中にmini-style.cssというcssを使用しています。
    幅に合わせて複数cssを用意してstyle.cssの最初に@importを使ってみましたが読み込みません。
    例:@import url(“css/mini-style.css”) only screen and(min-width:500px);

    他サイトや本などを見て、functions.phpを作り、cssを登録?というのですかね。見まねでしてみました。
    例:
    function site1_scripts(){
    wp_enqueue_style(‘css/mini-style’,get_stylesheet_url());
    }

    元々フォルダ分けが出来ないのかと思い、フォルダ分けをせずにstyle.cssと同じ場所にmini-style-.cssを置いてみましたが読み込んでくれませんでした。
    functions.phpの部分の理解も乏しく、お手上げ状態です。
    お力を貸していただけると幸いです。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • nobita

    (@nobita)

    こんにちは

    例:

    function site1_scripts(){
    wp_enqueue_style('css/mini-style',get_stylesheet_url());
    }

    使い方が、間違っているので、動作しないと思います。

    慣れるまで、(英語ですが)

    http://generatewp.com/register_style/

    等のジェネレータを使ってみてください。

    重要なのは、
    Styles Dependencies

    Styles Version

    Styles Dependencies
    は、スタイルシートの読み込み順を指定しますので、例えば、reset.cssは、最初に読み込んで、grid.cssは、その後に読み込むという意味です。

    Handle/Name を記述します。

    Handle/Nameは、
    それぞれのスタイルシートの名前です。半角英数 - _を使って記述するといいです。

    Styles Versionは、
    通常のhtmlであれば重要ではありませんが、ワードプレスは動的な出力を行うので、アップデートした時に、キャッシュがリセットできるようにクエリ文字列を付けます。

    @import ルールは、スタイルの最初に記述されなければなりません。

    @import ルールとメディアクエリを一緒に記述できるのかどうかちょっとわかりません。

    トピック投稿者 mayui

    (@mayui)

    こんにちは。
    ご返信ありがとうございます。

    ジェネレータの紹介ありがとうございます。
    さっそく参考にさせていただきました。

    お恥ずかしながら、functions.phpに何やら記述するくらいのことが昨日分かったばかりの初心者でして、いまだに専門用語を調べながらの作業です。

    wordpressの関数リファレンスのページを参考にできるだけジェネレータを埋めてみました。

    ですが、やはりcssは反映されていないようです。
    まずここが分かりません。
    ・テーマの編集の右側に独自のcssが反映されることはあるのか。(動くけどそもそもテーマの編集には見えないのか。)

    // Register Style
    function cosmo_1() {
    
    	wp_register_style( 'site1', 'css/mini-style', array( 'style' ), false, 'all' );
    
    }
    
    // Hook into the 'wp_enqueue_scripts' action
    add_action( 'wp_enqueue_scripts', 'site1' );
    nobita

    (@nobita)

    // Register Style
    function cosmo_1() {
    
    	wp_register_style( 'site1', 'css/mini-style', array( 'style' ), false, 'all' );
    
    }
    
    // Hook into the 'wp_enqueue_scripts' action
    add_action( 'wp_enqueue_scripts', 'site1' );

    ジェネレータの使い方の説明が雑だったので、設定がもれているのだと思いますが、

    Enqueue Style の指定は、yes(常に)に設定してください。

    それと、Styles URLの指定は、必ず http://(https://)から始まる絶対URLにしてください。

    まずは、サイトルートなど、ワードプレス外にcssファイルを置いて(ワードプレス的な書き方を省けるので)、このスクリプトが確実に動作している確証を得るといいです。

    それが、実現出来たら、ワードプレスでURLを記述する場合の基本的な方法(カスタマイズやテーマ制作には、必須)を覚えます。

    その例 twentytwelve functions.php line:152

    // Loads the Internet Explorer specific stylesheet.
    	wp_enqueue_style( 'twentytwelve-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentytwelve-style' ), '20121010' );
    	$wp_styles->add_data( 'twentytwelve-ie', 'conditional', 'lt IE 9' );

    get_template_directory_uri()という関数を使っている事で、テーマホルダーのURLを正しく指定できます。

    この指定を、自分のコードに適用し、テーマ内のCSSが確実にインクルードできるという確証を得てください。

    このステップが、完了したら

    $wp_styles->add_data( 'twentytwelve-ie', 'conditional', 'lt IE 9' );

    これは、何ぞや、global $wp_styles;を記述しないと動かないのは なんでや などといった事を、少しづつ覚えていくといいです。

    解からなくなったら、デフォルトテーマではどのようにやっているかを参考にするといいです。

    ・テーマの編集の右側に独自のcssが反映されることはあるのか。(動くけどそもそもテーマの編集には見えないのか。)

    テーマ内に置いた ファイルは リストに反映します。

    ただ、この機能を使って、functions.phpに エラーのあるPHPコードを記述した場合などで、エラーのために管理画面に入れなくなることもありますので、カスタマイズなどの過程で利用する以外は、この機能は使わないほうがいいです。

    FTP(SFTP,FTPS)接続をして編集をする方がおすすめです。

    こんな考え方はどうでしょうか。

    【CSS内で必要な個所のみを書き換える場合(style.css内)】
    /* Smartphones (portrait) ———– */
    @media only screen and (max-width : 640px) {
    .container {width:100%;}
    }

    【ヘッダーで分岐する場合】
    <link rel=”stylesheet” media=”screen and (max-width: 640px)” type=”text/css” href=”<?php bloginfo(‘template_url’); ?>/フォルダー名/CSSのファイル名.css” />

    トピック投稿者 mayui

    (@mayui)

    ftpsを使用して編集をしております。
    試しにstyle.cssと同じ階層に置いてみましたがテーマの編集には見えますが中身は反映されずです。
    nobitaさんの下部の文をみてエラーで管理画面がぐちゃぐちゃになるのは怖いので元の通り、cssフォルダを作りその中に各cssを作りました。

    mura0403さんのようにcss内で必要な個所を書き換えるといった方法では対応できないほど大きな変更になりstyle.css内が煩雑してしまうというのと、今後制作する度に外部のcssを読み込むといった作業が多くなりそうなので練習のためにもcssファイルを分ける方法はおさえておきたいです。

    なるべくなら@importを使わずヘッダーで分岐させたかったのですが、mura0403さんのように書いてみましたが変化はなかったです。

    絶対urlということで’http://webサイト名/wp-content/themes/site1/css/mini-style.css’として書いてみました。
    Enqueue Style の指定は、yesにしてみました。

    // Register Style
    function サイト名() {
    
    	wp_register_style( 'mini-style', 'http://サイト名/wp-content/themes/site1/css/mini-style.css', array( 'style' ), false, 'all' );
    	wp_enqueue_style( 'mini-style' );
    
    }
    
    // Hook into the 'wp_enqueue_scripts' action
    add_action( 'wp_enqueue_scripts', 'サイト名' );

    そもそもこれが何を目的として何のためにやってるのかが理解できず、htmlやcss側にどう書いていいのかがわかりません。

    htmlには
    <link rel="stylesheet" href="<?php echo get_stylesheet_uri(); ?>" media="all">

    style.cssには冒頭に
    @import url ("css/mini-style.css") only screen and(min-width:750px);

    と記述しました。

    これでhtmlの中にstyle.cssが読み込まれstyle.css内でmin-width:750pxの条件が揃ったときにcssフォルダ内からmini-style.cssが読み込まれるのだと思っていましたが読み込まれずです。

    某ページでfunctions.phpの記述が増えてくると管理しずらいのでフォルダを作り分けるといったものを見かけました。
    その通りに制作し、
    libというフォルダを作り数種類のphpフォルダを作って読み込ませる。
    functions.phpに

    require_once locate_template('lib/ファイル名.php');

    と記述をしたところフォルダ分けされfunctions.phpも動いてるのでcssも同じように何か書けばフォルダ分けされるのだろう位で考えていましたが調べてもたどり着けないといった感じです。

    nobitaさんが仰ってるのに近いのがこれかな?と思い
    http://webourgeon.com/2012/12/17/twenty-twelve-child-and-wp-enqueue-style/

    http://viral-community.com/wordpress/wp-child-theme-5818/

    なども見てみましたがやはりまだつかめずにいます。

    nobita

    (@nobita)

    ご参考まで、mura0403 さんが示された

    <link rel="stylesheet" media="screen and (max-width: 640px)" type="text/css" href="<?php bloginfo('template_url'); ?>/フォルダー名/CSSのファイル名.css" />

    記述の仕方は、以下のように記述する事も出来ます。

    add_action( 'wp_enqueue_scripts', 'register_plugin_styles' );
    
    function register_plugin_styles() {
      //ワードプレスのCSSをすべて集約している部分に対して、登録を行う
        wp_register_style( 'my-style',get_template_directory_uri(). '/css/extend.css' ),array(),1, 'screen and (max-width: 640px)');
      //CSSを呼び出して、指定場所に表示する
        wp_enqueue_style( 'my-style' );
    }

    と書くこともできます。

    テーマを作ろうとする場合は、自分の作ったCSSをどう表示させるかという事に気が取られがちですが、実際には、WordPress本体のCSS、プラグインによるCSS、テーマによるCSSが使われています。ヘッダーに直書きしても動作はしますが、

    CSSは、カスケードして適用されるので、順番のコントロールが出来ないという事は、運を天に任す事になるわけですが、そういう問題は、あまり発生しなかったり、発生しても !importantで乗り越えちゃってる みたいなところがあるのではないでしょうか

    「wp_enqueue_style を使ったほうが幸せになれるかもしれないという話」という記事はよくまとまっているので、参考にするといいと思います。

    トピック投稿者 mayui

    (@mayui)

    nobitaさんmura0403さんありがとうございました。

    とても参考になりました。

    回答を読めば読むほど新しい知識が増え、とても勉強になりました。
    mura0403さんの回答は他の方法を提示してくれて簡潔でわかりやすかったです。
    nobitaさんの回答はこれから勉強していく上でのヒントがかなり出ていて、はかどりそうです。
    詳しく注釈をつけてもらえて本当にありがたかったです。

    最後の回答により何か繋がった気がして、やっと反映されました!

    ご丁寧な回答ありがとうございます。
    もっとwordpressのルールを理解したいと思います。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「レスポンシブサイトのcssについて」には新たに返信することはできません。