Add a Submit Button to a Form
让我们来为你的form添加一个submit(提交)按钮,点击这个按钮,表单中的数据将会被发送到你通过action属性指定的地址上。
下面是submit按钮的例子:
this button submits the form
为你的form元素添加一个type为submit的提交按钮,用"Submit"作按钮文本。
Use HTML5 to Require a Field
当你设计表单时,你可以指定某些选项为必填项(required),只有当用户填写了该选项后,用户才能够提交表单。
例如,如果你想把一个文本输入字段设置为必填项,在你的input元素中加上required属性就可以了,你可以使用:
任务:给你的输入框添加required属性,这样用户不填写输入框就无法提交表单。
试试输入框不填写任何文本,然后点击Submit提交表单,看看浏览器如何提示你该字段为必填项。
注意:required属性在Safari浏览器中不起作用,请用其他浏览器来学习,推荐使用Chrome。
Create a Set of Radio Buttons
类比是最好的学习方式,当你搞不清一个概念时,最好在生活中找到对应的案例。
单选就是你只能在多个选项中选择一个,就好比你有很多追求者,但却只能选择一个结婚。
多选一的场景就用radio button(单选按钮)
单选按钮只是input输入框的一种类型。
每一个单选按钮都应该嵌套在它自己的label(标签)元素中。
注意:所有关联的单选按钮应该使用相同的name属性。
下面是一个单选按钮的例子:
Indoor
给你的表单添加两个单选按钮,一个叫indoor,另一个叫outdoor。
Create a Set of Checkboxes
当你在大学选课时,面对几百门课程,而因为时间和精力,你只能从中选择十几门。
这样的场景就用checkboxes(复选按钮)。
复选按钮是input的输入框的另一种类型。
每一个复选按钮都应该嵌套进label元素中。
所有关联的复选按钮应该具有相同的name属性。
下面是复选按钮的例子:
Loving
任务:为你的表单添加三个复选按钮,每个复选按钮都应该嵌套进它自己的label元素,所有复选按钮的name属性必须为personality。
Check Radio Buttons and Checkboxes by Default
使用checked属性,你可以设置复选按钮和单选按钮默认被选中。
为此,只需在input元素中添加属性checked
把你的第一个radio button和第一个checkbox都设置为默认选中。
Nest Many Elements within a Single Div Element
div元素,也被称作division(层)元素,是一个盛装其他元素的通用容器。
所以可以利用CSS的继承关系把div上的CSS传递给它所有子元素。
你可以用
来标记一个div元素的开始,然后用
来标记一个div元素的结束。
试着在你的"Things cats love"p元素之前放置div的开始标记,在你的ol结束标记之后放置div的结束标记,这样你的两个列表就都嵌套在div中了。
把"Things cats love"和"Things cats hate"两个列表都嵌套进同一个div元素中。
相当于把一些东西框在了一起,可以作为一个整体。联系盒子模型~
Give a Background Color to a Div Element
你可以用background-color属性来设置一个元素的背景颜色。
例如,如果你想把一个元素的背景颜色设置为green,你应该把这些加到你的style元素中:
.green-background {
background-color: green;
}
创建一个叫做gray-background的类选择器,设置其background-color为 gray,最后应用到div元素。
Set the ID of an Element
除了class属性之外,每一个 HTML 元素还可以使用id属性。
使用id属性有若干好处,一旦当你开始使用 jQuery 的时候你会有更深的体会。
id属性应该是唯一的,虽然浏览器并不强制唯一,但基于最佳实践,这一点是被广泛认可的,所以请不要给一个以上的元素设置相同的id属性。
下面举例说明了如何设置h2元素的id属性为cat-photo-app。
任务:设置form元素的id属性为cat-photo-form。
Use an ID Attribute to Style an Element
和类选择器一样,你也可以使用ID选择器来声明样式。
声明一个叫cat-photo-element的ID选择器 ,并设置背景色为绿色。:
#cat-photo-element {
background-color: green;
}
注意:在你的style元素内部,定义类选择器必须添加.为前缀,定义ID选择器必须添加#为前缀。
任务:试着给你的表单,添加一个值为cat-photo-form的 id 属性,一个绿色的背景。
Adjusting the Padding of an Element
现在让我们把 Cat Photo App 暂时搁置,以学习更多的 HTML 样式。
你可能早已经注意到了这点,所有的 HTML 元素本质上是小的矩形块,代表着某一小块区域。
有三个影响HTML元素布局的重要属性:padding(内边距)、margin(外边距)、border(边框)。
元素的padding控制元素内容content和元素边框border之间的距离。
在这儿,我们可以看到绿方块和红方块都位于黄方块之中,但是红方块比绿方块具有更大的padding。
当你加大绿方块的padding, 它将扩大元素内容和元素边框的距离。
任务:修改绿方块的padding以使它与红方块相匹配。
Adjust the Margin of an Element
元素的外边距margin控制元素边框border和元素实际所占空间的距离。
在这儿,我们可以看到绿方块和红方块都位于黄方块之中,注意红方块比绿方块具有更大的外边距margin,使得它看起来更小。
当你增大绿方块的margin时,将会增加元素边框和元素实际所占空间之间的距离。
修改绿方块的margin以使它与红方块匹配。
Add a Negative Margin to an Element
元素的margin控制元素的border和元素实际所占空间的距离。
如果你将一个元素的margin设置为负值,元素将会变大。
具体可以看看红方块的margin值。
任务:把绿方块的margin设置为-15px,以使它将父容器(黄方块)的横向宽度填满。
Add Different Padding to Each Side of an Element
有时你想要自定义元素,使它的每一个边具有不同的padding。
CSS 允许你使用padding-top、padding-right、padding-bottom和padding-left来控制元素上右下左四个方向的padding。
使你的绿方块的顶部和左侧具有40px的padding,而底部和右侧则是20px。
Add Different Margins to Each Side of an Element
有时你想要自定义元素,使它的每一个边具有不同的margin。
CSS 允许你使用margin-top、margin-right、margin-bottom和margin-left来控制元素上右下左四个方向的margin。
使你的绿方块的顶部和左侧具有40px的margin,而底部和右侧则是20px。
Use Clockwise Notation to Specify the Padding of an Element
除了分别指定元素的padding-top、padding-right、padding-bottom和padding-left属性外,你还可以集中起来指定它们,举例如下:
padding: 10px 20px 10px 20px;
这四个值以顺时针方式排列:顶部、右侧、底部、左侧,简称:上右下左。
使用顺时针方式设置 ".green-box" class,使其顶部和左侧具有40px的padding,而底部和右侧具有20px的padding。
Use Clockwise Notation to Specify the Margin of an Element
让我们再试一次,但这次是用于margin。
除了分别指定元素的margin-top、margin-right、margin-bottom和margin-left属性外,你还可以集中起来指定它们,举例如下:
margin: 10px 20px 10px 20px;
这四个值以顺时针方式排列:顶部、右侧、底部、左侧,简称:上右下左。
使用顺时针表示法设置含有 ".green-box" class 的元素,使其顶部和左侧具有40px的margin,而底部和右侧具有20px的margin。
Style the HTML Body Element
现在让我们来一个全新的开始,讲一讲 CSS 继承。
每一个 HTML 页面都有一个body元素。
通过将其background-color设置为黑色,我们可以证明body元素的存在
我们可以通过将下面的代码添加到我们的style元素来做到这一点:
body {
background-color: black;
}
Inherit Styles from the Body Element
现在我们证明了每一个 HTML 页面都有一个body元素,并且其body元素同样能够应用样式。
记住,你可以像对其他 HTML 元素一样对你的body元素应用样式,并且所有其他元素将继承你的body元素的样式。
首先,创建一个文字为Hello World的h1元素。
然后,让我们通过向body元素的样式声明部分添加color: green;使页面上的所有元素的颜色为green。
最后,通过向body元素的样式声明部分添加font-family: Monospace;将body元素的 font-family(字体)设置为Monospace。
Prioritize One Style Over Another
有时你的 HTML 元素会得到相互冲突的多个样式。
例如,你的h1元素不能同时为绿色和粉色。
让我们来看看当我们创建一个使其文字为粉色的 class 时会发生什么,然后将其应用到某元素。我们的 class 会override(覆盖)body元素的color: green;CSS 属性吗?
创建一个使元素颜色成为粉色的名为pink-text的 CSS class。
设置h1元素的 class 为pink-text。
Override Styles in Subsequent CSS
我们的 "pink-text" class 覆盖了body元素的 CSS 声明!
我们刚刚证明了我们的 class 会覆盖body元素的 CSS,那么下一个合乎情理的问题就是,我们怎样才能覆盖我们的pink-textclass 呢?
再创建一个把元素设置为蓝色的名为blue-text的 CSS class,确保它在你的pink-textclass 声明的下面。
除了pink-textclass 之外,再把blue-textclass 应用到你的h1元素,让我们来看看谁会赢。
如下例,通过用空格分隔多个 class 属性,可对 HTML 元素应用多个 class 属性:
class="class1 class2"
注意:在 HTML 中这些 class 如何排序是无所谓的。
然而,