笔记
一,css盒模型
- html对每个容器进行了定义。这些容器之间的排版是由css来定义的。
(1)一个容器包含Margin,Border,Padding,Content四个部分。
-
content指的是你的真正的内容。
-
border是盒子的边框
-
padding是边框与你的内容之间的填充部分
-
margin是盒子之间的间距。
(2)padding
画框与画之间的填充部分。
-
两个值,分别表示上下和左右属性
-
4个值,依次表示上右下左。
或者用padding-bottom
padding-top
padding-left
padding-right
设置。
(3)margin
用合适的间距将两个盒子分隔开
(4)border
盒子的边框,是margin和padding之间的部分。
-
border-style值 设置order样式
-
dotted: 定义一个点线边框
-
dashed: 定义一个虚线边框
-
solid: 定义实线边框
-
double: 定义两个边框。 两个边框的宽度和 border-width 的值相同
-
groove: 定义3D沟槽边框。效果取决于边框的颜色值
-
ridge: 定义3D脊边框。效果取决于边框的颜色值
-
inset:定义一个3D的嵌入边框。效果取决于边框的颜色值
-
outset: 定义一个3D突出边框。 效果取决于边框的颜色值
-
border-width值 设置border宽度
-
border-color 设置border颜色
-
border-radius 设置圆角
二,CSS布局
用css对容器进行布局。
(1)块级元素
一个块级元素在css中的display
属性定义为block
。
块级元素独占一行,当你定义一个新的块级元素的时候,他会新开一行。并且下一个同级元素也会新开一行。跨级元素的宽度是父容器的宽度。
(2) 内联元素
一个内联元素在css中的display
属性定义为inline
。
内联元素会排列在一行内,其高度和上下边距不可变。
(3)行内块状元素
块级元素一般用于整个网页大的定位。内联元素用于行内容器的定位。
可以发现块级元素和内联元素都有一定的缺陷。跨级元素不能在同一行内。而内联元素由不能设置高度和边距。
如果想把容易横向排列,同时又想设置他的高度,可以使用行内块状元素,把他的display定义为:inline-block
这样这个容器会与前面的容器排列在同一行中,并且你可以定义此容器的高度和边距。
(4)float
设置容器的float属性会让容器浮于标准流上面,这个也可以用于让两个块级元素并列排放。但是要注意这个脱离了标准流。
float:left\right
会让你的元素从左(右)开始一个一个排列。
(5)弹性盒子
在CSS3中引入了弹性盒子的概念。弹性盒子在布局上更加自然方便。
三,js初步
赋值
在js中对于变量的定义是弱定义的,可以使用let
var
对于新建的变量进行声明,建议使用let。
const
用于声明常量。
object
除了常见的基本数据类型,js中还经常需要使用object对象类型。
可以使用.
运算符取出对象中的特定元素。
除了object外,还有数组,函数。这三种数据类型在赋值时赋值的都是地址,后续对于其修改都会影响其所有引用的值。
函数
js中的函数一般通过用户的特定的动作触发。
与css类似,js可以写在html的``标签内,也可以写成一个单独的文件,然后html对其进行引用。
- 当你把语句写到函数外面时,就会在网页启动时自动执行这些语句。
循环语句
循环是计算机最基本的艺能。
js的循环语句写法与java类似。
控制语句
在js函数里,你可以使用if
else
来控制函数的走向。
在if后面的括号里写一个bool表达式,只有真假两个值,当bool表达式的值为真时,就会执行if语句块,否则就会执行else语句块。
可以只有if没有else,每个if与一个else配对,if可以嵌套。
input标签
input标签可以供用户输入信息。
在js中有两种方法可以获取input中用户填入的值。
-
把input放到form标签下,然后直接通过formname.inputname.value获取
-
通过id获取。使用doucument.getElementById(inputId).value获取。
API
有一些js已经为你写好的函数,你直接调用就可以使用他们的功能。
比如弹出警告窗windows.alert()
在控制台打印信息console.log()
用到的时候自行百度即可。
Dom树
html标签是可以嵌套的,这种嵌套关系使他们构成了一个树形结构。这就是Dom树,每个标签都挂在dom树上。
你可以通过document.getElementById
从dom树上获取特定id的元素,
doucument.getElementByClass
可以获得class为特定值的元素列表。
innerHTML
你可以使用innerHTML获取某个标签中的内容。
使用getEmementById可以从dom树上获取这一元素。
然后调用某个元素的innerHTML就可以获取他的内容了。
同时,你也可以设置他的innerHTML。
如果我只是想往这个容器里添加sent这部分内容只要这样写就好了(提交4)
document.getElementById("ShowShowWay").innerHTML =
document.getElementById("ShowShowWay").innerHTML + sent;
一些问题和解决
-
给网页加背景的方法
-
一开始想要引用打印在控制台上的数字失败:关于次数计分数的问题
- 解决办法是不打印在控制台,换成计数的函数显示在屏幕上,分数由猜数的次数控制
-
生成随机数的方法:用函数(在教程里看到一个和线下培训里教的不一样的方法就用了)
-
有时候运行不起来,在控制台报错
- 解决办法,改编函数的顺序
-
想同时执行两个指令,但是按一开始的方法要按两个按钮;且一个按钮不能同时执行两个指令
- 解决办法是把两个函数合到一个函数里,用一个按钮执行函数
-
出现不论输入的数字是多少都显示偏小的情况,尚未解决(困扰我最久的问题,后面重新写了一个)
-
点击按钮出发函数之前尝试过除alert之外的函数(是从网上找的教程),后面失败了,看着代码没有弄懂运行的逻辑
-
第二个交换的游戏好像要用到循环的函数,但是我想不清楚思路,暂且用我那个代替(表面上看没什么问题至少)
-
在控制台报错:说某一个元素未定义
- 原因是花括号打错位置,元素没有在函数的花括号里面(肉眼有时候真的很难看出来)