BOOK Studio947
狩野祐東・狩野さやか著書

p220フォームのスタイルと属性セレクタについて

書籍Q&ACategory: スラスラわかるHTML&CSSのきほんp220フォームのスタイルと属性セレクタについて
asked 8年 ago

お問い合わせの件名だけ横幅が他のと一緒になりません。
先日教えていただいたバリデータで確かめても間違いが出てこないのですが
何が違うんでしょうか?

HTMLで、以下を記述しました。ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>お問い合わせ|KUJIRA cafe</title>
<link rel="stylesheet" type="text/css" href="css/style.css">
</head>
<body>
<div class="wrapper">
<!– ヘッダー –>
<h1 id="logo"><a href="index.html"><img src="images/logo.png" width="217" height="89" alt="KUJIRA cafe"></a></h1>
<ul id="nav">
<li><a href="index.html">ホーム</a></li>
<li><a href="about.html">店舗案内</a></li>
<li><a href="access.html">アクセス</a></li>
<li><a href="menu.html">メニュー</a></li>
<li><a href="contact.html">お問い合わせ</a></li>
</ul>
<!– ヘッダーここまで –>
<!– メイン –>
<h2>お問い合わせ</h2>
<form method="GET" action="result.html">
<div>
<label for="kind">お問い合わせの種類</label><br>
<select id="kind" name="kind">
<option value="reservation">パーティの予約について</option>
<option value="contact">一般的なお問い合わせ</option>
</select>
</div>
<div>
<label>初めてのお問い合わせですか?</label><br>
<label><input type="radio" name="first" value="yes" checked>はい</label>
<label><input type="radio" name="first" value="no">いいえ</label>
</div>
<div>
<label>当カフェをお知りになったきっかけは?</label><br>
<label><input type="checkbox" name="how" value="friends">知り合いの紹介で</label>
<label><input type="checkbox" name="how" value="magazine">雑誌・Webサイトで見て</label>
</div>
<div>
<label>お問い合わせ件名<br>
<input type="text" name="subject" value="お問い合わせ">
</label>
</div>
<div>
<label>お問い合わせの具体的な内容<br>
<textarea name="message"></textarea>
</label>
</div>
<input type="submit" id="title" name="submit" value="送信">
</form>
<!– メイン ここまで–>
<!– フッター –>
<div id="footer">
<p>©Copyright KUJIRA cafe. All rights reserved.</p>
</div>
<!–フッター ここまで–>
</div>
</body>
</html>

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

次に、CSSで以下を記述しています。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
@charset "utf-8";

/* すべてのwebページに適用される */
body{
margin: 0 0 0 0;
padding: 0 0 0 0;
background-color: #f5f3eb;
}
.wrapper{
margin: 0 auto 0 auto;
width: 900px;
}
h2{
color: #442220;
font-size: 18px;
border-bottom-width: 2px;
border-bottom-style: dotted;
border-bottom-color: #442220;
margin-top: 20px;
margin-right: 0px;
margin-bottom: 20px;
margin-left: 0px;
padding-top: 10px;
padding-right: 10px;
padding-bottom: 10px;
padding-left: 10px;
}
p{
line-height: 160%;
}
a:link{
color: #6aa4d6;
}
a:visited{
color: #6aa4d6;
}
a:hover{
color: #4f7697;
}
a:active{
color: #aed3f2;
}
h1{
margin: 30px 0 30px 0;
padding: 0 0 0 0;
line-height: 0;
text-align: center;
}
img{
border-style: none;
}

/* すべてのページに適用 - navまわり – */
#nav li {
display: inline;
list-style-type: none;
padding-right: 30px;
}
#nav{
margin: 0 0 0 0;
padding: 15px 30px 10px 30px;
background-image: url(../images/menu-bg.png);
}
#nav li a:link{
color: #f5f3eb;
text-decoration: none;
}
#nav li a:visited {
color: #f5f3eb;
text-decoration: none;
}
#nav li a:hover{
color: #e4dbb9;
text-decoration: none;
}
#nav li a:active{
color: #ffffff;
text-decoration: none;
}

/* すべてのページに適用 - footer – */
#footer {
background-image: url(../images/footer-bg.png);
background-repeat: repeat-x;
margin-top: 30px;
padding: 20px 0 20px 0;
font-size: smaller;
color: #442220;
}

/* 個別のスタイル */
/* index.html */
.keyvisual{
margin: 20px 0 0 0;
}
.news_item{
margin: 0 0 0 0;
}

/* about.html */
.float img {
float: left;
padding-right: 1em;
}
.clear{
clear: both;
}
table.info{
border-collapse: collapse;
border: 1px solid #b78c5f;
}
table.info th, table.info td{
padding: 8px 8px 8px 8px;
border: 1px solid #d6c2b5;
text-align: left;
vertical-align: middle;
}
table.info th{
background-color: #c99e73;
color: #442220;
}

/*menu.html*/
.menu_block{
overflow: hidden;
zoom: 1;
}
.menu_left {
float: left;
width: 280px;
margin-right: 20px;
}
.menu_right{
float: left;
width: 600px;
}
table.menu_all{
border: none;
border-collapse: collapse;
}
table.menu_all td{
padding: 0;
}
table.menu_all td.photo{
padding: 0 10px 10px 0;
}
.menu_right h3 {
margin: 20px 0;
text-align: right;
font-size: 16px;
color: #442220;
}
.menu_right p {
text-align: right;
font-size: 12px;
}

/* access.html */
div.map {
text-align: center;
}

/*contact.html*/
form div {
padding: 12px;
border-bottom: 1px dashed #d6c2b5;
}
select {
width: 30em;
}
label {
color: #442220
}
input [name=subject] {
width: 30em;
}
textarea {
width: 30em;
height: 6em;
}
input [type=submit] {
margin: 20px 12px;
width: 30em;
}
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

1 Answers
狩野 祐東 Staff answered 8年 ago

こんにちは。

「お問い合わせ件名」のテキストフィールドを選択するCSSのセレクタがちょっとだけ間違っていて、スタイルが適用されていないと思われます。

この部分:

input [name=subject] {

input[name=subject]の間に半角スペースは不要で、続けて書かないといけません。

この部分に半角スペースがあると、セレクタとしては子孫セレクタ(本書p.130)になってしまい、「<input>タグの子要素で、属性がname="subject"になっているタグ」を選択しようとします。contact.htmlにそんなタグはありませんから、スタイルが適用されないわけです。

正解:

input[name=subject] {

また、ソースを見るかぎり、数行下のinput [type=submit]にも半角スペースが入っているようなので、ついでにこちらも続けて書くように直したほうがよいでしょう。