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

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

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

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

Q&A

解決済

2回答

156閲覧

【CSS3】実装方法を教えてください!

Ronny

総合スコア7

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

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

1グッド

1クリップ

投稿2018/02/07 08:17

イメージ説明

上図のように、青い多角形バーの左右部分のみブラウザウィンドウ幅に合わせて拡大する仕様にしたいのですが、CSS3、もしくはその他の方法でも構いませんがどなたか実装方法を教えていただけないでしょうか?

CSS3でのマスクなどいろいろ検討したのですが私にはお手上げで…
どなたかご教授よろしくお願いいたします。

<補足説明>
・背景には画像を配置したいので青い部分以外は透過。
・ブラウザウィンドウ高さを拡大しても青い部分の高さは固定。
・ブラウザウィンドウサイズをデフォルトより縮小した場合に青い部分を縮小する必要は無し。

以上、何卒よろしくお願いいたします。

defghi1977👍を押しています

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

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

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

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

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

defghi1977

2018/02/07 08:32

質問のタイトルは具体的に何がしたいのかが判るものとして下さい.
Ronny

2018/02/07 08:43

申し訳ありません、この場合どのようなタイトルをつけるべきかわからなくて…
defghi1977

2018/02/07 08:48

> 上図のように、青い多角形バーの左右部分のみブラウザウィンドウ幅に合わせて拡大する仕様にしたいのですが、 がこの質問の肝なので, 「画像の左右だけ引き伸ばして表示したい」とかつけとけば良いのですよ
Ronny

2018/02/07 08:52

なるほど。お教えありがとうございます!
guest

回答2

0

ベストアンサー

背景画像を扱うbackground-xxx系のプロパティは総じて複数の値を設定できます. そのため4つのPNG画像(青いラインを分割したものと, 更にその後ろの背景写真)を用意して, 適切にbackground-position, background-size, background-repeat値を定義すれば対処できます.

CSS

1body { 2 position: absolute; 3 background-image: 4 url(http://jsrun.it/assets/g/V/3/B/gV3BD),/*左可変画像*/ 5 url(http://jsrun.it/assets/C/i/d/9/Cid9h),/*中央固定画像*/ 6 url(http://jsrun.it/assets/q/U/3/q/qU3qI),/*右可変画像*/ 7 url(http://jsrun.it/assets/G/z/m/x/GzmxO.png); 8 background-size: calc(50% - 100px) 200px,200px 200px,calc(50% - 100px) 200px,200px 200px; 9 background-repeat: no-repeat, no-repeat, no-repeat, repeat; 10 background-position: left top, center top, right top, left top; 11} 12

動作例
http://jsdo.it/defghi1977/ezjI


NOTE:以下はSVGを用いた別解です.

ここではレスポンシブなSVGを使った解決策を提示します.

HTML

1<!--背景画像とするSVG--> 2<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%"> 3 <svg x="50%" y="50%" overflow="visible"> 4 <path d="M-2000,100H-100L100-100H2000" stroke-width="50" stroke="navy" fill="none"/> 5 </svg> 6</svg>

HTML

1<div></div>

CSS

1div{ 2 position: absolute; 3 top: 0; 4 left: 0; 5 width: 100%; 6 height: 100%; 7 background-image: url(responsive.svg), url(bg.jpg); 8} 9

動作例
http://jsdo.it/defghi1977/4ZW5


NOTE:
以下はborder-imageで解決できると早合点した際の名残です. 実際には画像の固定位置が中央部となるため, 本プロパティでは対処できません.

CSSのborder-imageプロパティを使えば実現できるでしょう.

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

投稿2018/02/07 08:28

編集2018/02/07 13:40
defghi1977

総合スコア4756

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

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

Ronny

2018/02/07 08:43

早々にありがとうございます! 検証してみます。
Ronny

2018/02/07 12:12

検証してみましたがうまくいきません… もしよろしければ追記したのでサンプルをご確認いただけないでしょうか? よろしくお願いします。
defghi1977

2018/02/07 12:32

ああ, これborder-imageの逆で, 真ん中が固定なのね. ちょっと考えてみるね.
Ronny

2018/02/07 14:12

ありがとうございます! 実装検証したところ完璧でした!! ほんと助かりました・・・涙 重ね重ねありがとうございました!!!
guest

0

こんにちは。

こんな感じですかね

html

1<section> 2 <div class="line-box"></div> 3</section>

scss

1*{ 2 padding:0; 3 margin:0; 4} 5body{ 6 width:100%; 7} 8section{ 9 width:100%; 10 height:500px; 11 overflow:hidden; 12 position:relative; 13 14} 15 16.line-box{ 17 position:absolute; 18 width:100px; 19 height:200px; 20 background-color:#00ff00; 21 top:50%; 22 left:50%; 23 transform:skew(-30deg) translate(-50%,-50%); 24 &::before,&::after{ 25 content:" "; 26 position:absolute; 27 display:block; 28 top:0; 29 30 width:calc((120vw - 100px) / 2); 31 height:100px; 32 background-color:#00ff00; 33 } 34 &::before{ 35 left:calc((-120vw + 100px) / 2); 36 top:100px; 37 } 38 &::after{ 39 left:calc(100px); 40 } 41} 42

ざっくりですが。

投稿2018/02/07 09:40

kogure

総合スコア299

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

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

Ronny

2018/02/07 12:11

ご回答ありがとうございます。 どうも説明不足だったようです。 申し訳ございません。 追記しましたのでご確認していただけると幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問