CSSを使ってファイルサイズを削減したい

[上に] [前に] [次に]
B-Cus 1999/07/21(水) 09:06:56
 http://www.keim.cs.gunma-u.ac.jp/~matsu/link.html
というのを作っているのですが、サイズの肥大化で悩んでいます。
見ていただくとわかりますが、同じタグが何度も(300回くらい)出てきます。

元々は1件につき
 <a href="http://hoge/fuga/URL1">http://hoge/fuga/URL1</a>
 <a href="URL2" style="text-decoration:none"><font color=green>〜</font></a>
という記述をしていたのですが、とほほさんのとこでCSSなるものを
ちょっとだけ学んで <head>〜</head> に
 <STYLE TYPE="text/css">
 <!--
 .green { color: green }
 -->
 </STYLE>
として、1件につき
 <a href="http://hoge/fuga/URL1">http://hoge/fuga/URL1</a>
 <a class=green href="URL2" style="text-decoration:none">ほげほげ</a>
と、少しだけ短くなりました。

で、CSSを使ってこれをさらに短くしたいのですが、それは可能でしょうか。

 1. <a href="URL">URL</a> と、同じURLが2度書かれているのを、
   CSSを使って1度だけ書けば済むようにしたい
 2. style="text-decoration:none"もCSSで抽象化したい
 3. class=greenの方のリンクは、全て http://www.jp.freebsd.org/QandA/ で始まる
   URLだが、<base>タグを使わず、こちらもCSSで抽象化したい(BASEタグを使うと
   ページ内リンクが使いにくいから)

以上3点、可能かどうか教えてください。


それからCSS自体についても疑問があるのですが、
 .green { color: green }

 .qa { color: green }
として、
 <a class=green href="URL2" style="text-decoration:none">ほげほげ</a>

 <a class=qa href="URL2" style="text-decoration:none">ほげほげ</a>
とすると、リンクの色が緑になりません。これは何故でしょうか?
ID(z98yとか)を使えばできましたが、なぜgreenをqaに変えるとダメなのか
教えてください。

よろしくお願いします。

B-Cus 1999/07/21(水) 09:15:01
訂正訂正。正確には1件につき
 <li><a href="http://hoge/fuga/URL1">http://hoge/fuga/URL1</a>
 <dl><dd>
  <a class=green href="URL2" style="text-decoration:none">ほげほげ</a>
 </dl>
という構造になってます。<li><dl><dd>もあわせて抽象化できれば
さらにgoodです。いい方法ありませんか?

ST 1999/07/21(水) 09:20:10
2については,
A:link { text-decoration: none; }
A:visited { text-decoration: none; }
A:hover { text-decoration:underline; }
A:active { text-decoration:underline; }
こんな感じでは。最初の一行があればやりたいことはできると思います。1は…そんなことできるんですか?

>…とすると、リンクの色が緑になりません。これは何故でしょうか?
http://www.tohoho-web.com/css/basic.htm#Class
の方法がいいと思います。

B-Cus 1999/07/21(水) 09:37:33
なるほろ。
> A:link { text-decoration: none; }
style="..." はそのままCSSとして利用できるわけですね。
で、Aを定義(用語がわからん…)することで、リンク全体に影響を
与えられる、と。今回は一部のリンクだけに影響を与えたいので
 #z98y { text-decoration: none; color: green; }
としました。これで最初に比べて20KBくらい減ったかな?

> 1は…そんなことできるんですか?
できないですかね? 1時間前に初めてCSSに触れたもので、
CSSで何が可能で何が不可能かを理解してないんですが。

> http://www.tohoho-web.com/css/basic.htm#Class
> の方法がいいと思います。
いえ、うまくいかない理由を知りたいのです。
 .green { color: green }
はよくて
 .qa { color: green }
がダメということは、
 .ほげ { color: 最初のほげと同じ文字列 }
である必要があるとか?

ポケ鬼!! 1999/07/21(水) 11:11:08
 久々に復活!!入院してたんです(少年院じゃないよ)。
 いやぁ、はじめて手術しました。麻酔聞いてていたみはないけど、メスが刺さったときに「さくっ」という感覚があるのは最高に気持ち悪いですね。

 さて・・・

>CSSで何が可能で何が不可能かを理解してないんですが。

 CSSでできるのは主に配置の制御と、装飾ですね。

>いえ、うまくいかない理由を知りたいのです。
> .green { color: green }
>はよくて
> .qa { color: green }
>がダメということは、

 どんな環境なのか分からないですけど、単なるバグでしょうね。
 NT4.0+IE5.0ではちゃんと緑色になります。


> .ほげ { color: 最初のほげと同じ文字列 }
>である必要があるとか?

 これはないです。
 余談ですが、そもそもクラス名に色名を付けるのはナンセンス。「見栄え」ではなく「意味」を前面に出すためのCSSなのですから。後でリンクを赤にしたいなぁ・・・と思ったときに、
.green {color: red;}
じゃ気持ち悪いしね。

[E-Mail] [HomePage] 1999/07/21(水) 14:36:22
> 1. <a href="URL">URL</a> と、同じURLが2度書かれているのを、
>   CSSを使って1度だけ書けば済むようにしたい

これは単に

<li><a href="http://hoge/fuga/URL1">http://hoge/fuga/URL1
 <dl><dd>
  <p class=hoge>ほげほげ</p></a>
 </dl>

と書けばすみそうですが、だめですか?


 

[E-Mail] [HomePage] 1999/07/21(水) 14:46:50
すみません。質問の意味を取り間違えました。同じURLが2度という
のは、<a href="http://hoge/fuga/URL1">http://hoge/fuga/URL1
のことで、<a href="http://hoge/fuga/URL1">と<a href="http://hoge/fuga/URL2">
の2度という意味ではなかったのですね。

すみません。

toshi [E-Mail] 1999/07/21(水) 16:22:21
>1について...
あの〜、質問の意味をとりちがえていたら申し訳ありませんが、JavaScriptを使ってはダメなのでしょうか?
それなら
<script language="JavaScript">
  url[0]="http://hoge/fuga/URL1";
  url[1]="http://hoge/fuga/URL2";
  .
  .
  .
  url[99]=http://hoge/fuga/URL99";

  url_max=99;

  var BUF="";
  n=0;
  while(n<=url_max){
    BUF+='<li><a href="'+url[n]+'">'+url[num]+'</a><dl><dd>'
       + '<a id=z98y href="'+url[n]+'">いろいろ</a></dl>';
    n++;
  }

  document.write(BUF);
</script>
でいけるとおもいます。あとは適当に応用してください。
私もこれと似たことをやろうとしていましたのでよければ
http://hp.vector.co.jp/authors/VA014508/main/index.html
のソースをご覧下さい。かなり見にくいですが...(笑)

B-Cus 1999/07/21(水) 17:36:27
> 少年院じゃないよ
救護院ですか?(さぶ〜)

> CSSでできるのは主に配置の制御と、装飾ですね。
要は見栄え、ってことですね。
 #define mylink(x,y) <li><dl><dd><a href="$x">$x</a>\
  <a href="http://....../$y.html">[管理番号 $y]</a></dl>
なんて感じのが出きるかなと思ったのですが無理のようですね。

> どんな環境なのか分からないですけど、単なるバグでしょうね。
なるほど。今はSolaris2.5.1+Netscape4.08を使ってます。
# 4.6がうまく入らないの。

> JavaScriptを使ってはダメなのでしょうか?
確かにもっともな案です。が、互換性のなさ(UNIXのNN/NCでエラーに
なるページがとても多い)で苦しんできた僕としては、Javascriptにだけは
手を出したくないので、すいませんがパスさせてください。

別に他意はないのですが、toshiさんの
 http://hp.vector.co.jp/authors/VA014508/main/index.html
もうちの環境では見ることができません。
 JavaScript Error:
 http://hp.vector.co.jp/authors/VA014508/main/data.js,
 line 63:
 unterminated string literal.
    s_like[s]="以下文字化け...
 ..................^
# Javascriptは知らないのでブラウザの方が悪いのかもしれませんが。
# なお、このエラーの出るサイトは山のようにあります。

あと、another-htmllintでチェックすると
 line 51: <A> の ID 属性の値 `z98y` は 47行目ですでに使われています。→ 解説 106
というエラーがたくさん出ます。
 106.<TAG> の ID 属性の値 `XXXX` は NN行目ですでに使われています。
  HTML2.xやHTML4.0で各タグに付けることのできるID属性は、ひとつのHTML中で
  重複した名前を付けることはできません。また、ID属性の値は、大文字小文字
  区別されません。
ということらしいですが、
 #z98y { text-decoration: none; color: green; }
 <a id=z98y href="...">ほげほげ</a>
は誤りなのでしょうか?

1999/07/22(木) 00:19:04
僕の使っているCSSの解説本には
id名もclass名も" "で囲まれているので
" "で囲ってみたらどうですか?

.hoge1 {color:green;text-decoration:none;}
#hoge2 {color:green;text-decoration:none;}

<A CLASS="hoge1" HREF="URL">ほげほげ</A>を
<A ID="hoge2" HREF="URL">ほげほげ</A>

こんな感じ。

たーむ 1999/07/22(木) 01:29:09
> 106.<TAG> の ID 属性の値 `XXXX` は NN行目ですでに使われています。
>  HTML2.xやHTML4.0で各タグに付けることのできるID属性は、ひとつのHTML中で
>  重複した名前を付けることはできません。また、ID属性の値は、大文字小文字
>  区別されません。

これは

#z98y { text-decoration: none; color: green; }

このように指定した場合

<a id=z98y href="aaa">ほげほげ</a>

<a id=z98y href="bbb">ほげほげ</a>

というように、HTML中で2回以上z98yという値は使用してはいけない
と言うことだったと思います。
JavaScriptでもidが使われてるみたいなので
CSSに限ったことじゃないのかもしれませんが。

たーむ 1999/07/22(木) 01:38:17
続けてですみませんが・・・

> <li><a href="http://hoge/fuga/URL1">http://hoge/fuga/URL1</a>
> <dl><dd>
>    <a class=green href="URL2" style="text-decoration:none">ほげほげ</a>
> </dl>
>

とこのようになっているのであれば
このようにしてはどうでしょうか?
Netscapeでちゃんといくか不安ですが。


<STYLE TYPE="TEXT/CSS">
<!--

li a{color:red;}
dl a{color:blue;text-decoration:none;}

-->
</STYLE>


<li><a href="http://hoge/fuga/URL1">http://hoge/fuga/URL1</a>
<dl>
  <dd><a href="URL2">ほげほげ</a>
</dl>

B-Cus 1999/07/23(金) 00:00:56
[[解決]]
一応解決マーク付けておきます。
> HTML中で2回以上z98yという値は使用してはいけない
> と言うことだったと思います。
これはどうしてなんでしょうか。まるで「1度しか読み出せない変数」
みたいで、これだとIDの存在意義があるのかと思ってしまうのですが…。

> このようにしてはどうでしょうか?
どうもです。試してみます。

Nobu3 1999/07/23(金) 00:38:58
直接関係ないですが、idの重複についてです。
idは、nameと同じようにアンカーの役目もするので、重複できない事になっています。(HTML4.0では)
でも、IE4などは、同一idを配列化してくれるので、スクリプトなどで使う分には問題ないですが。

[上に] [前に] [次に]