質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SVG

SVGは、XMLを基盤とした2Dベクター画像記述言語。画像を線・面といった図形の集合体として扱うベクター画像のため、環境に適した表示が可能です。アニメーション機能もサポートされており、簡単なインタラクティブコンテンツ作成もできます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1151閲覧

ボタンの装飾のSVGの色を、カラーパレットから選んだテキストの色と合わせたい。

ry0xi

総合スコア4

SVG

SVGは、XMLを基盤とした2Dベクター画像記述言語。画像を線・面といった図形の集合体として扱うベクター画像のため、環境に適した表示が可能です。アニメーション機能もサポートされており、簡単なインタラクティブコンテンツ作成もできます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/08/03 07:05

編集2021/08/03 07:56

Lightningというテーマをもとに子テーマでカスタマイズしているのですが、ボタンに追加したSVGの色をテキストの色と合わせる方法を模索しています。

目次
1. 教えていただきたいこと
2. 背景
3. 現在のスタイル指定
4. 考えている代替手段

教えていただきたいこと

角丸ボタン
右にある矢印のSVG画像を、ブロックエディタでカラーパレットから選択したテキストの色に合わせる方法を模索しています。

ボタンのタグにa1, a2というクラスを付与し、

css

1a.a1 { 2 color: red; 3} 4 5a.a2::after { 6 background-image: url('svgのコード'[stroke="currentColor"を指定]); 7}

理想はspan.a2::afterのsvg画像で、stroke(線)の色をredにしたいのですができません。

svgタグをボタンを投稿に追加するたびに記述するのはできないので、HTMLにsvgタグを追加せず、CSSのみで指定する方法を教えていただきたいです。

背景

子テーマからwp-block-buttonの新しいブロックスタイルを追加しました。

php

1add_action('init', function () { 2 register_block_style( 3 4 // wp-block-button 5 'core/button', 6 [ 7 'name' => 'btn-square-rounded', 8 'label' => '角丸ボタン', 9 'style_handle' => 'editor-style.css' 10 ] 11 ); 12});

カラーパレットを追加

php

1function setup_theme_supported_features() { 2 // カラーパレットに色を追加 3 add_theme_support( 'editor-color-palette', array( 4 array( 5 'name' => 'テーマブラック', 6 'slug' => 'theme-black', 7 'color' => '#413D3D', 8 ), 9 array( 10 'name' => 'テーマブルー', 11 'slug' => 'theme-blue', 12 'color' => '#5985EE', 13 ) 14 ) ); 15} 16add_action( 'after_setup_theme', 'setup_theme_supported_features' );

SASS

1$colorList: ( 2 'black': #413D3D, 3 'blue': #5985EE 4); 5// lightning側の指定の影響でhover時の色がうまく指定できないため!importantとした。 6@each $color_name, $color in $colorList { 7 .has-theme-#{$color_name}-background-color { 8 background-color: $color !important; 9 } 10 .has-theme-#{$color_name}-color { 11 color: $color !important; 12 } 13}

現在のスタイルの指定

HTML

1<div class="wp-block-button is-style-btn-square-rounded"> 2  <a class="wp-block-button__link has-theme-black-color has-theme-blue-background-color has-text-color has-background" href="/blog">ブログ記事へ</a> 3</div>

after疑似要素のbackground-imageにsvgコードを指定し、stroke="currentColor"としています。

SASS

1.wp-block-button { 2 line-height: 1.5; 3} 4 5.is-style-btn-square-rounded { 6 .wp-block-button__link { 7 font-size: 20px; 8 height: 52px; 9 border-radius: 26px; 10 padding: 0.5em 2.6em 0 1.8em; 11 position: relative; 12 &::after { 13 content: ''; 14 display: block; 15 height: 0.8em; 16 width: 0.5em; 17 position: absolute; 18 top: 50%; 19 right: 1.6em; 20 transform: translateY(-50%); 21 background: url('data:image/svg+xml;utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="8" height="16" viewBox="0 0 10.897 19.395"><path d="M-3800.077-11102.448l8-8-8-8" transform="translate(3801.774 11120.146)" fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.4"/></svg>') left center no-repeat; 22 transition: right 0.3s ease-in-out; 23 } 24 &:hover::after { 25 right: 0.8em; 26 } 27 } 28}

角丸ボタン
結果:上に表示した画像のように矢印の色が、has-theme-black-colorで指定している黒色(#413D3D)ではなく、黒色(#000??)になってしまいます。
aタグには.is-style-btn-square-rounded(svgを背景に持つ疑似要素の元の要素)と.has-theme-black-color(カラーパレットの色をcolorで指定している)があるのですが、svgに指定したcolor:currentColor;が.has-theme-black-colorで指定したcolor値を参照しせず、うまくいきませんでした。

考えている代替手段

PHPなどで投稿の文字列を探索していろいろやってしまうと表示速度に影響しそうなので、できればCSSのみで指定したいですが、

  • the_contentのフィルターフックを使い、is-style-btn-square-roundedクラスが投稿にある場合は「svgタグ」を子要素に追加しstroke: currentColor;を指定する。(調べるとこれで指定できそう)
  • wp_footerのアクションフックを使い、svgタグの追加と動的なstrokeの値の指定を行う

この辺りを検討しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

あまりいい方法ではないと思うのですが、SCSSで無理やり埋め込んでみました。
サンプルを置いておきます。

https://jsfiddle.net/Lhankor_Mhy/j0thx6fa/

scss

1$colorList: ( 2 "black": #413d3d, 3 "blue": #5985ee, 4); 5// lightning側の指定の影響でhover時の色がうまく指定できないため!importantとした。 6@each $color_name, $color in $colorList { 7 .has-theme-#{$color_name}-background-color { 8 background-color: $color !important; 9 } 10 .has-theme-#{$color_name}-color { 11 color: $color !important; 12 } 13 14// ここから 15 .is-style-btn-square-rounded { 16 .wp-block-button__link.has-theme-#{$color_name}-color { 17 &::after { 18 background: url('data:image/svg+xml;utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="8" height="16" viewBox="0 0 10.897 19.395"><path d="M-3800.077-11102.448l8-8-8-8" transform="translate(3801.774 11120.146)" fill="none" stroke="#{"%23"+str-slice(""+$color,2)}" stroke-linecap="round" stroke-linejoin="round" stroke-width="2.4"/></svg>') 19 left 20 center 21 no-repeat; 22 } 23 } 24 } 25}

投稿2021/08/06 09:05

Lhankor_Mhy

総合スコア36074

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ry0xi

2021/08/06 15:43

回答ありがとうございます。 やはり、全部記述するしかないですね… 質問後ほとんど同じ方法で全部を指定したのですが、SASSでstr_sliceが使えることは知らなかったので、SVGの色を変えるのに便利ですね。
Lhankor_Mhy

2021/08/07 00:44

既にご解決でしたか。それは何よりです。
ry0xi

2021/08/07 13:01

ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問