2009-09-02 7 views
1

ログインフォームの丸い角に私の最初の試みがあります。ちょうど今レイアウトをやっているが、IE7のトラブルがいくつかある。条件文の使用を避けようとしていますが、Firefox 3.5で完全に表示することはできますが、IEはログインボタンの左右に大きなマージンを作成するように見えます。私はこれを可能な限り最良の方法で構成しているわけではないかもしれないので、コミュニティからの少しの洞察を探しているかもしれません。私の問題のほとんどは、示された方法を使ってコーナーに丸めようとした後に始まりました。私の目標はIE6/7との互換性です。IEのボタン要素に余りにも多くの余白があると、Firefoxで完璧に見えます

<div id="credentials"> 
    <div id="credsheader"><div id="tr"> </div></div> 
    <input type="text" class="blurred" id="username" value="USERNAME" /> 
    <input type="password" id="password" class="blurred" value="PASSWORD" /> 
    <button type="submit" id="login"><img src="./images/login.png" alt="Submit" /></button> 
    <div id="credsfooter"><div id="bl"> </div></div> 
</div> 

div#credentials{ 
    position: absolute; 
    right: 10px; 
    top: 10px; 
    background-color: #666; 
    padding: 0px 5px; 
} 

div#tr{ 
    float: right; 
    background: url('../images/tr.png'); 
    background-repeat: no-repeat; 
    cursor: default; 
} 

div#bl{ 
    float: left; 
    background: url('../images/bl.png'); 
    background-repeat: no-repeat; 
    cursor: default; 
} 

#credsfooter{ 
    position: absolute; 
    bottom: 0px; 
    left: 0px; 
    height: 6px; 
} 

#credsheader{ 
    position: absolute; 
    top: 0px; 
    right: 0px; 
    height: 6px; 
} 

#username{ 
    font-family: 'Lucida Sans', Helvetica, Arial, sans-serif; 
    font-size: 8pt; 
    padding: 3px; 
    margin: 8px 3px; 
    vertical-align: middle; 
} 

#password{ 
    font-size: 8pt; 
    padding: 3px 3px 4px 3px; 
    margin: 8px 17px 8px 3px; 
    vertical-align: middle; 
} 

input.blurred{ 
    color: #AAA; 
} 

input.focused{ 
    color: #000; 
} 

#login{ 
    background: transparent; 
    border: 0px; 
    padding: 4px 0px 2px 0px; 
    margin: 0px -12px; 
    cursor: pointer; 
    vertical-align: middle; 
} 
+0

IEには、 "ボタン"要素に重大な機能(フォーマットではない)のバグがあることに注意してください。押されたかどうかに関わらず、ボタンの値を送るのと同じように、フォームの処理ではユーザーが何をしたかを知ることができません。あなたの状況に何の違いもないかもしれません(もしあなたが一つの送信ボタンしか持っていなければ、フォームが十分な情報であるという事実です)が、一般的にinput type = "submit"に固執するのが最良です。 – Martha

答えて

0

許容マージンはありますが、まだ完全なクロスブラウザではありません。それはひどく見えなくなるまで、余白のサイズをピクセル単位で操作するだけの時間でした。あなたが目に見えるオーバーフロー設定する必要がIE7で<button>要素で

0

この場合はわかりませんが、'IE Double Margin Bug'である可能性があります。

メモリから、浮動小数点型の要素にdisplay: inline;を追加する価値があると思いますか?

Good Luck!

+0

うわー、これはうまくいきませんでしたが、そうすべきですね。 IE7では、マージンが倍増したように見えます。しかし、本当に知って良い。 –

+0

ああ - それはショットの価値があった! CSSは本当に私のものではありませんが、あなたのために速い勝利だった場合には、私はそれを言いたいと思いました!がんばろう! –

+0

私はそれが後で必要になることは間違いなく確かです。 –

0

実際にはHTMLを表示しないと答えにくいです(画像など)。サンプルページをどこかに設定できますか?

理論的には、ボタン要素にhasLayoutがない場合があります。ボタン要素にposition: relativeのCSSスタイルを追加して、それが機能するかどうかを確認できます。代わりに、負の水平マージンの場合もあります(IEは時々好きではありません)。

1

わかりましたので、私は基本的にやり直してしまったので、ブラウザの不一致によって多くの問題が発生することがわかりました。私は矛盾のためにフォームが嫌いですので、これは私のための学習体験でした。私は実際にCSSを統合することができました。なぜなら、その多くが奇妙なパディングと余白を補うために使われたからです。主なことは、ボタンの代わりにボタンの入力要素を使用したことです。ボタンがブラウザ間でより一貫しているからです。また、フォームタグを追加して問題を修正しました。このフォームの<p>は意図的なものです。また、すべての要素をすべてのブラウザに一貫性のある状態にリセットするため、大きな違いをもたらすreset.cssファイルを追加しました。以下は

再書かれたコードである:私はボタンで使う画像は、私はGoogleで見つかったいくつかのランダムな画像であることを

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
     <title>Buttons Suck in IE7!</title> 
     <link rel="stylesheet" href="reset.css" type="text/css" /> 
     <style type="text/css"> 
      #credentials{ 
       position: absolute; 
       right: 10px; 
       top: 10px; 
       background-color: #666666; 
       padding: 10px; 
       -moz-border-radius: 5px; 
      } 

      input.text-input{ 
       font-family: 'Lucida Sans', Helvetica, Arial, sans-serif; 
       border: 1px solid black; 
       vertical-align: middle; 
       height: 20px; 
       width: 140px; 
       color: #AAAAAA; 
      } 

      input.text-input:focus{ 
       color: #000000; 
      } 

      input#login{ 
       background: transparent; 
       border: 0px; 
       height: 20px; 
       cursor: pointer; 
       vertical-align: middle; 
      } 
     </style> 
    </head> 
    <body> 
     <div id="credentials"> 
      <form action="http://www.site.com/login.php"> 
       <p> 
        <input type="text" class="blurred text-input" id="username" value="USERNAME" /> 
        <input type="password" class="blurred text-input" id="password" value="PASSWORD" /> 
        <input id="login" type="image" 
          src="http://www.axialis.com/objects/users-home.jpg" 
          name="submit" value="Button Text" /> 
       </p> 
      </form> 
     </div> 
    </body> 
</html> 

注意!丸みを帯びたコーナーに-moz-border-radius: 5px;を使用したことに気がつくかもしれません。これは単純化のためであった。あなたができることは、Firefoxの資格情報ボックスのスクリーンショットを撮ってから、お気に入りの画像エディタでボックスを切り抜くだけです。次に、ある種のペイントブラシツールを使用して入力を灰色で塗りつぶします。今度は同じ形と大きさの空白の灰色のボックスがあります。これで、資格情報ボックスの背景イメージとして設定するだけです。これはずっと簡単ですし、一度に各コーナーを実行してください!これを忘れずに-moz-border-radius: 5px;を忘れないでください。

ああ、私はここで忘れて前にすると、reset.cssです:

body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td { 
     margin:0; 
     padding:0; 
} 
table { 
     border-collapse:collapse; 
     border-spacing:0; 
} 
fieldset,img { 
     border:0; 
} 
address,caption,cite,code,dfn,em,strong,th,var { 
     font-style:normal; 
     font-weight:normal; 
} 
ol,ul { 
     list-style:none; 
} 
caption,th { 
     text-align:left; 
} 
h1,h2,h3,h4,h5,h6 { 
     font-size:100%; 
     font-weight:normal; 
} 
q:before,q:after { 
     content:''; 
} 
abbr,acronym { border:0; 
} 

は、すべてのページにこのreset.cssそのA命の恩人が私を信頼含めます。ああ、最後の一言。 input.text-input:focus{}はおそらくIE6または7で動作しませんが、タグ上でのみ動作します。しかし、IE6の寿命は限られていると思うので心配しないでください。

私はそれが役に立ったと思っています...幸運!

更新:IE 5.5-8でこれをテストしたところ、すべて同じように見えますが、唯一の問題はフォーカスがIE8で入力タグとしてのみ機能することです。

関連する問題