誕生日にもらった意外なもの

現在いくつかのサイト閲覧時の表示レイアウトを変更するために
Stylish にて自作の定義を作っているのですが
cssを理解していないこともあり(基本的に全く理解してません)
どうしても自己解決ができずに悩んでいる点があります

もしわかる人がいたらどんな書き方すれば対処できるのかを教えてください
(もしくはどう頑張っても対処不可のものがある?)

使っているアドオンとしては 他に FireDebug と Adblock Plus(以降Adblock表記) があり
とりあえず現状は合わせ技で対処してますが可能であれば
現在 Adblock にて非表示にしている部分を Stylish 管理にしたいと思っています

内容
Firedebugにて htmlの項目として以下の定義がなされている部分を
height 0 もしくは非表示 に変更したい(そのスペースを詰めたい)
<li Style=”float:left;width:728px;margin-left:8px;height:110px;">
(データ的には該当領域には広告画像が表示されます)

・Firedebug上からのスタイル変更はできています(確認にしかならない)
・AdBlock にて 以下の定義で 非表示にすると対応はできています
サイト名##LI[style="float:left;width:728px;margin-left:8px;height:110px;"]
  ↑ の事から height 0 でも非表示でもどちらでもできればいいと考えています

ですがこれをStylish側で対処させようとしてもうまくいきません
試したこと
1.Firedebug にて 標準の element.style { height が効いているようだったので
  そのままそれをコピーしてheight:0 !important; を追加
  (他のサイトでそのような書き方で変わるところもありました)
2.他のパターンでできている #や.の定義と同様にしてdisplay: none !important; を追加
3.FireDebug で階層を開いていくと <div class=”クラス名” の定義もあったので
  (他のものは大抵その記載で非表示にできている)
  そのクラス名でdisplay: none !important記載追加
    この場合 FireDebug で確認すると サイズが変更されているので
    別のものになってしまっているように思える

※ 上記 コピペなどしているため記載ミスがあるかもしれませんが
  stylish上でのお試し時にエラーは出ていません

なんとなくStylishだけではどうあがいても変更不可能の場合があるのではないかと思っていますが
どうなのでしょうか

A 回答 (2件)

firebugですね。

はにすいしいこなきなんて知らない。
HTML/CSSが両方見れている状況で、スタイルシート側の余白を右クリックして「新しいスタイル」にして、隠したい要素を指定してdisplay:none;でよい。
li[style=”float:left;width:728px;margin-left:8px;height:110px;"]{display:none;}
とか、それがdiv.header内にあれば
div.header ol li{display:none;}

!important
 は最重要宣言になってしまう。カスケーディング上特殊な扱い。

CSSは、カスケーディングスタイルシートと銘打つくらい
5 セレクタ( http://momdo.s35.xrea.com/web-html-test/spec/CSS … )
6 プロパティ値とカスケーディング、継承の割り当て( http://momdo.s35.xrea.com/web-html-test/spec/CSS … )
 の二つを知らないと、まったく利用できない。

><div class=”クラス名” の定義もあったので
 このように、本来「文書に構造を付加するための( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 … )」DIVをデザインのために記述するという失敗をすることになる。
    • good
    • 0
この回答へのお礼

>firebugですね。
ご指摘のようにfiredebugはfirebugの書き間違いです

>はにすいしいこなきなんて知らない
タイプミスなのか何を書かれてるか理解できません

li[style="float:left;width:728px;margin-left:8px;height:110px;"] {display:none !important;}
はすでに試していたはずなんですが(試したこと2の項目で)
改めて試したところなぜか今回は機能してしまいました
ちょっと??????状態です(入力ミスでもしたんだと思うけど)

>!important
> は最重要宣言になってしまう。カスケーディング上特殊な扱い。
http://www.authority-site.com/2010/05/firefox/ho …
を参考にしていますがCSSの適用順に関係する項目で
!important を付けなければ、ウェブページの指定が優先されてしまうということなので
どちらにしてもそれで悩まないようにとするために 必要がなくても
必ずつけるようにしています
つけることで動かないということもあるという事でしょうか?
  上記 URL以外にも他のCSS説明ページや
  他のユーザが作って公開されているスタイルに書かれている
  いくつかの方法とを組み合わせながら試行錯誤しています

ちなみに今回 !important をつけない状態(書いていただいてる内容)も
確認してみましたが
li[style="float:left;width:728px;margin-left:8px;height:110px;"] {display:none;}
では消えませんでした  回答そのまま貼り付けは構文エラーになりました

実は現在他にも同様な現象が出ているものがあるのですが
そちらはまたちょっと事情が違うのでもう少し試行錯誤してみたいと思います
一応簡単に書いてみると
adblock では ##.jhasvdjhas の定義で消えている
stylish では .jhasvdjhas {display:none !important} 書いても消えない
(とりあえず今回改めてやってみましたがやはり対応不可のまま)
↑どちらかというと今回質問した項目と比べると 他の方法で消せている記載と
ほとんど同じような状態のはずなんでこっちの方が簡単なはずなんだけどなぜか消えない

回答ありがとうございました

お礼日時:2014/07/21 20:58

firebugの名前が出ていたので、質問を誤解していたかも。


 あくまであなたが特定のサイトの表示を変更したいということとしたら、firefoxの場合はuserContent.cssの編集になります。

>li[style="float:left;width:728px;margin-left:8px;height:110px;"] {display:none;}
では消えませんでした 回答そのまま貼り付けは構文エラーになりました>
★W3C CSS 検証サービス( http://jigsaw.w3.org/css-validator/#validate_by_ … )
 で調べたら分かるように構文エラーはありません。他の原因でしょう。

>.jhasvdjhas {display:none !important}
 詳細度が[0,0,1,0]ですね。
li[style="float:left;width:728px;margin-left:8px;height:110px;"]
 だと、詳細度は[0,0,1,1]です。
 当然ですが、それ以上詳細度の高い設定が他にあれば、上書きでません。
たとえば、
<body>
 <div class="article">
  <div class="header">
   <div class="nav" id="globalNabi">
    <ol>
     <li>
[HTML5]
<body>
 <article>
  <header>
   <nav id="globalNabi">
    <ol>
     <li>

 というDOMでしたら
div.header div.nav ol li:first-child{ /* 詳細度[0,0,3,4] */
header nav ol li:first-child{ /* 詳細度[0,0,1,4] */
 それで効かなければ
div.header div.globalNavi ol li:first-child{ /* 詳細度[0,1,3,4] */
header nav#globalNavi ol li:first-child{ /* 詳細度[0,1,1,4] */
 とする。
 著者の重要宣言は、他の場所での通常宣言を上書きするための機構ですが、詳細度の差を越えて上書きしてしまうため、注意しないとならなくなります。
[例]
div.header p{color:red;/* 文書のヘッダ(クラスセレクタ)内のp要素は赤 [0,0,1,1] */
p{ color:blue;} /* p要素(タイプセレクタ)は青[0,0,0,1] */
 これだと、ふたつの指定が離れていても、とても分かりやすい。
div.header p{color:red;/* 文書のヘッダ(クラスセレクタ)内のp要素は赤 [0,0,1,1] */
p{ color:blue !important;} /* p要素(タイプセレクタ)は青[0,0,0,1] */
 この場合、ふたつの設定が離れていると分かりづらくなる。

★stylishで、ユーザー用スタイルシートを作成する場合は、御指摘のように、ユーザースタイルシートに!importantを付けて、サイト側の指定を上書きする必要があります。
 ⇒6.4.1 カスケード処理の順序( http://momdo.s35.xrea.com/web-html-test/spec/CSS … )

 サイト別に指定する場合は
 ⇒ユーザスタイルシートによるカスタマイズ(1) - えむもじら( http://level.s69.xrea.com/mozilla/index.cgi?id=2 … )

@-moz-document url-prefix(http://oshiete.goo.ne.jp/){
  body { background-color: #ddf !important; }
}

この回答への補足

>特定のサイトの表示を変更したい
趣旨としてはそういう事です(ユーザ用スタイルシート設定の質問)
firebug は要素などの確認のために使っている というだけです
(こちらも細かな使用方法は理解していません)

公開するつもりもありませんし自分の嗜好依存での変更なので
めちゃくちゃな書き方だろうが
多少レイアウトが崩れようが特に問題となるようなこともありません
本サイトの表示も質問と回答以外はかなり消しまくり
空きスペース分の幅を質問・回答表示のエリアに含めるようにしてしまっています


>構文エラーはありません。他の原因でしょう
あんまり深い意味はなかったのですが
" の表記が間違ってるために(先頭が”で記載)エラーになったということです

最初はそのまま貼り付けて お試し したのですはエラーで実行できませんでした
画面の表示フォントなどの関係で始め見分けができずにちょっと悩みましたが
再度自分で定義しなおしたときに気が付きました

>ユーザー用スタイルシートを作成する場合は、御指摘のように、
>ユーザースタイルシートに!importantを付けて、
>サイト側の指定を上書きする必要があります。
現状の方法で問題ないということで理解しました

全文ちゃんと読むのは後になるのでとりあえず補足にて

補足日時:2014/07/22 12:08
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報