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

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

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

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

HTML5

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

Q&A

解決済

2回答

8040閲覧

background-attachment: fixed;とtransformを使うとedgeで固定背景できない

sauzar18

総合スコア163

CSS3

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

HTML5

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

0グッド

1クリップ

投稿2018/04/04 01:57

編集2018/04/04 05:45

表題の通り、edgeで固定背景のバグがあるので、回避する方法があれば、教えてほしいです。

html

1<div class="st-skew" id="sc-skew"> 2 <ul> 3 <li> 4 <section> 5 <h3>title</h3> 6 <p>text</p> 7 </section> 8 </li> 9 <li> 10 <section> 11 <h3>title</h3> 12 <p>text</p> 13 </section> 14 </li> 15 <li> 16 <section> 17 <h3>title</h3> 18 <p>text</p> 19 </section> 20 </li> 21 </ul> 22</div>

SCSS

1.st-skew{ 2 transform: skewX(8.6deg) rotate(8.6deg); 3 width: 100%; 4 background-color: hsl(212, 100%, 27%); 5 box-shadow: 0 4px 2px hsla(0, 0%, 0%, 0.2); 6 ul{ 7 margin: 40px auto 70px; 8 padding: 40px 0; 9 display: flex; 10 justify-content: center; 11 position: relative; 12 z-index: 1; 13 background-image: url(../images/image01.jpg); 14 background-repeat: no-repeat; 15 background-size: cover; 16 background-attachment: fixed; 17 } 18 li{ 19 width: 250px; 20 transform: rotate(-8.6deg) skewX(-8.6deg); 21 p{ 22 line-height: 1.75; 23 color: #fff; 24 } 25 } 26 li:nth-child(2){ 27 margin: 0 40px; 28 } 29}

こちらの記述でedge以外は動くのですが、
出来ればedgeでも動くようにしたい。

before要素などそこにバックグラウンドを指定して
position:fixed;なども試したが、だめでした。

追記
仕様:斜めに傾けたコンテンツに固定の背景を設定している。
edge以外のブラウザでは、背景は固定されているが、
edgeだと背景は固定ではなくなる。
原因はbackground-attachment: fixedとtransformの混在によるもの

firefoxでもedgeと同様になる

解決案

JavaScript

1const fixedScroll = document.querySelector('#sc-skew ul') 2window.onscroll = e => { 3 fixedScroll.style.backgroundPositionY = `${window.pageYOffset}px`; 4}

IE11に対応するなら(アロー関数とテンプレートリテラルが使えないため)

JavaScript

1window.addEventListener('scroll', function(){ 2 fixedScroll.style.backgroundPositionY = window.pageYOffset + "px"; 3})

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

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

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

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

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

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

defghi1977

2018/04/04 02:06

CSSじゃなくてSCSS?
sauzar18

2018/04/04 02:12

そうですね(笑)修正します。
defghi1977

2018/04/04 02:15

で、「どのような動きを想定していてEdgeではどうなっている」かを詳しくお書き下さい.
x_x

2018/04/04 03:15

Edge以外でということですが、Firefoxでも想定通りということでしょうか?
sauzar18

2018/04/04 03:59

想定通りです。
sauzar18

2018/04/04 04:01

あ、想定通りといったのですが、今確認したら動いてないですね。
x_x

2018/04/04 04:03

いやいや、確認してから回答ください
guest

回答2

0

ベストアンサー

なかなか、完璧な対処が見つかりませんが,

edgeで固定背景のバグがある
原因はbackground-attachment: fixedとtransformの混在によるもの

が正しいなら, background-attachment: fixedを使わずに背景画像の位置を固定できればこの問題は解決するはずです.

そこで, スクロール量をスクリプトで取得し, その値から背景画像の位置を変更する方法を考えました.
(Edgeでの検証はしていません.)

JavaScript

1window.onscroll = e => { 2 div.style.backgroundPositionY = `${document.documentElement.scrollTop}px`; 3}

※この方法を用いた場合, スクロール量をイベントで取得している関係上タイミングによっては背景画像が一瞬ずれるといった現象が発生します.

投稿2018/04/04 02:52

defghi1977

総合スコア4756

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

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

sauzar18

2018/04/04 02:59

ありがとうございます。こちらを試してみます。
guest

0

背景固定のtransformについては、ここでの議論の通り、Firefoxの動きが仕様通りということになります。
https://lists.w3.org/Archives/Public/www-style/2012Jun/0635.html
https://bugzilla.mozilla.org/show_bug.cgi?id=735857

これについて思うところもあると思いますが、Chromeが未実装ということです。

投稿2018/04/04 04:13

x_x

総合スコア13749

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

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

sauzar18

2018/04/04 04:19

ありがとうございます。firefoxに合わせた設計で実装するのがよさそうですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問