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

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

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

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

Q&A

解決済

3回答

984閲覧

疑似要素で上下左右のボーダーがつけられない

kuroyu

総合スコア11

Sass

Sassは、プログラミング風のコードでCSSを生成できるスタイルシート言語です。 scss ファイルを、変換(コンパイル)してCSSファイルを作成します。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

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

0グッド

0クリップ

投稿2019/07/09 13:57

編集2019/07/09 14:11

前提・実現したいこと

イタリアの国旗風な上下左右のストライプ柄のボーダーを付けたいです。

発生している問題・エラーメッセージ

上下のボーダーはつけることが出来たのですが、
左右につけようとすると上書きされて上下が消えました。
まとめればいいのかとも思いましたがblockとinline-blockを使っているのでまとめ方がわかりませんでした。
もしくはこれ以外の方法でつける方法を知りたいです。
イメージ説明
あと、左右だけつけた場合にheightを高くすると文字だけが一番下に行ってしまいます。
line-heightをつけても変わりませんでした。
イメージ説明

該当のソースコード

HTML

1<div class="menu"> 2 <p>イタリアンレストラン</p> 3</div>

Sass

1.menu{ 2 p{ 3 display: inline-block; 4 height:15px; 5 margin:10px; 6//上下 7 &::before, 8 &::after{ 9 content:""; 10 display: block; 11 width:100%; 12 background:repeating-linear-gradient(45deg,green, green 5px, white 5px, white 10px,red 10px,red 15px); 13 height:5px; 14 } 15//左右 16 // &::before, 17 // &::after{ 18 // content:""; 19 // display: inline-block; 20 // height:100%; 21 // background:repeating-linear-gradient(45deg,red, red 5px, white 5px, white 10px,green 10px,green 15px); 22 // width:5px; 23 // } 24 } 25}

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

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

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

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

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

guest

回答3

0

すでに終了していますが、正攻法と思われる回答がないので書いておきます。

CSS

1.menu p { 2 border: 5px solid #cc6; 3 border-image: repeating-linear-gradient(45deg, green, green 5px, white 5px, white 10px, red 10px, red 15px) 5 / 5px repeat; 4}

https://developer.mozilla.org/ja/docs/Web/CSS/border-image

投稿2019/07/10 04:42

x_x

総合スコア13749

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

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

syuus

2019/07/10 11:39

kuroyuさんへ。 自分のやり方はシンプルではなく無駄が多いので、x_xさんのコードを参考にしてください。
guest

0

x_xさんの回答のほうが正攻法なので、そちらを参照してください。

単純に背景と文字を分けてしまえば簡単に実現できるかと思います。

html

1<div class="menu"> 2 <p>イタリアンレストラン</p> 3</div>

css

1* { 2 margin: 0; 3 padding: 0; 4} 5 6.menu { 7 background: repeating-linear-gradient(45deg, green, green 5px, white 5px, white 10px, red 10px, red 15px); 8 display: inline-block; 9 padding: 5px; 10 11 p { 12 background: #fff; 13 } 14}

どうしても ::before ::after で書きたいのであれば、こんな書き方も可能です。
おすすめはしません。なるべくシンプルに書いたほうが良いかと思います。

css

1p { 2 display: inline-block; 3 position: relative; 4 background: #fff; 5} 6 7p::after { 8 background: repeating-linear-gradient(45deg, green, green 5px, white 5px, white 10px, red 10px, red 15px); 9 content: ''; 10 width: calc(100% + 10px); 11 height: calc(100% + 10px); 12 position: absolute; 13 top: -5px; 14 left: -5px; 15 z-index: -1; 16}

投稿2019/07/09 14:32

編集2019/07/10 11:56
syuus

総合スコア403

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

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

0

ベストアンサー

このような感じでどうでしょうか?
.menuのbackground-colorをコメントアウトしたり、.menu::afterのpositionの値を変えたりしてみると挙動が分かりやすいと思います。

サンプル → https://jsfiddle.net/tu7wo8xp/

html

1<div class="menu"> 2 <p>イタリアンレストラン</p> 3</div>

css

1.menu { 2 position: relative; 3 background-color: white; 4 width: 10em; /* サイズは調整してください */ 5} 6 7.menu::after { 8 position: absolute; 9 top: -5px; 10 bottom: -5px; 11 left: -5px; 12 right: -5px; /* (擬似的に)線の太さの調整 */ 13 background: repeating-linear-gradient(45deg, green, green 5px, white 5px, white 10px, red 10px, red 15px); 14 content: ''; 15 z-index: -1; 16}

投稿2019/07/09 14:40

編集2019/07/09 16:36
take-t.t.

総合スコア360

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

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

kuroyu

2019/07/09 19:08

afterでどうにかすることしか頭にありませんでした・・・ 重ねてしまえば見た目は同じですね!ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問