发表于: 2018-06-10 20:53:16

1 668


日报--6.10

今天完成的事情

  1. 完成了任务11
  2. 任务12写完了第一个页面
  3. 写任务10 & 任务11的任务总结--wiki
  4. 学习javascript的基本语法规则,条件判断、分支、循环、数据类型(基本类型和引用类型),Array的常用方法。

明天计划的事情

  1. 完成任务12,争取完成任务13.
  2. 继续看javascript,争取把js的基础语法看完,进入到DOM的部分。

遇到的问题

后面的任务以重构为主,暂时还未遇到特别的问题。

收获

以下是任务10 & 任务11的任务总结:

任务10:

官方脑图:


个人脑图:



任务耗时:完成任务10 共计2天

是否延期:否

成果链接:https://swpuhu.github.io/Start-a-project/Task10/task10.html


任务总结:

学习了如何修改radio按钮的样式和select下拉框的样式,学习了HTML的表单form标签,认识了input标签的常见类型。

学会了使用伪元素来画组合图形。


下面展示一下如何修改radio按钮的样式:


单纯的修改radio按钮的border background-color 的属性是无法修改radio按钮的样式的。

原理:

把原先的input按钮隐藏掉,通过伪元素,在label标签前画一个自定义的图案,比如圆形。 再把label和input元素通过for属性和id属性绑定在一起,再添加input:checked效果,即可完成美化按钮。具体步骤如下:

<body> 

<input type="radio" name="1">

<label>选项一</label>  

<br>  

<input type="radio" name="1">

<label>选项二</label>

</body>

此时效果如下:

1.第一步:通过伪元素 画出label前的图案

 label{  

    position: relative;   

   margin: 0 20px;    }   

label::before{    

 position: absolute;     

  left: -20px;      

  width: 16px;      

  height: 16px;      

  border: 1px solid #399bfd;      

  border-radius: 50%;   

  content: "";     

  box-sizing: border-box;    }

1.第二步:通过input元素伪类checked添加点击效果

input:checked+label::before{      

  background-color: white;      

  border: 5px solid #399bfd;    

}

此时点击input的radio按钮,发现我们自己画的图形也会发生改变了。 但是直接点击我们的图形是没有任何效果的。

1.第三步:通过for与id属性绑定input和label

<body>  

<input type="radio" name="1" id="item1">

<label for="item1">选项一</label>  

<br>  

<input type="radio" name="1" id="item2">

<label for="item2">选项二</label>

/body>

只需要将input的id属性与label的item属性一一对应起来就可以了。

此时可以通过点击label使我们的自定义按钮发生变化了。

最后一步:

隐藏input按钮

input[type="radio"]{    

  display: none;  

}



任务11:


官方脑图:


个人脑图:


任务耗时:完成任务11   1天

是否延期:否

成果链接:

https://swpuhu.github.io/Start-a-project/Task11/task11.html


任务总结:

使用less编写CSS样式,

less的使用方法,在vscode中可以安装easy leass插件,每次保存less文件的时候,系统会在当前目录下自动生成.css文件。

或者采用手动编译的方式,首先安装node.js

打开node.js 输入 

npm install -g less 安装less

再使用less编译:

lessc style.less style.css 就可以了




以下是今日JavaScript的学习笔记

JavaScript学习笔记-day2

总体来的说js的语法规则和C、Java的语法规则还是大同小异的。 引入了一些新名词

Label标签

label表示了通过break或continue跳出循环的跳出点在哪儿 一般label标签要和break和continue配合使用

语法规则:

label: statement

start:for(var i = 0;i<count;i++){
alert(i);
break start;
}

with语句:

with 语句的作用是将代码的作用域设置到一个特定的对象中。

语法规则

with(expression) statement;

示例:

var qs = location.search.substring(l);
var hostName = location.hostname;
var url = location.href;


上面几行代码都包含 location 对象。如果使用 with 语句,可以把上面的代码改写成如下所示

with(location){
var qs = search.substring(1);
var hostName = hostname;
var url = href;
}

函数

使用function关键字来生命,后很一组参数和函数体,

语法规则

function functionName(arg0,arg1,...,argN){ statements }

示例:

function sayHi(name,message){
alert("Hello" + name + ", " + message)
}


理解参数

ECMAScript 函数的参数与大多数其他语言中函数的参数有所不同。ECMAScript 函数不介意传递进 来多少个参数,也不在乎传进来参数是什么数据类型。也就是说,即便你定义的函数只接收两个参数, 在调用这个函数时也未必一定要传递两个参数。可以传递一个、三个甚至不传递参数,而解析器永远不 会有什么怨言。之所以会这样,原因是 ECMAScript 中的参数在内部是用一个数组来表示的。函数接收 到的始终都是这个数组,而不关心数组中包含哪些参数(如果有参数的话)。如果这个数组中不包含任 何元素,无所谓;如果包含多个元素,也没有问题。实际上,在函数体内可以通过 arguments 对象来 访问这个参数数组,从而获取传递给函数的每一个参数。 其实, arguments 对象只是与数组类似(它并不是 Array 的实例),因为可以使用方括号语法访 问它的每一个元素(即第一个元素是 arguments[0] ,第二个元素是 argumetns[1] ,以此类推),使 用 length 属性来确定传递进来多少个参数。在前面的例子中, sayHi() 函数的第一个参数的名字叫 name ,而该参数的值也可以通过访问 arguments[0] 来获取。因此,那个函数也可以像下面这样重写, 即不显式地使用命名参数:


function sayHi(){
alert("Hello" + arguments[0] + "," + arguments[1]);
}


这说明命名的参数只提供遍历,但不是必须的

没有重载

如果在ECMAScript中定义了两个名字相同的函数,则该名字只属于后定义的函数。

变量、作用域和内存问题

ECMAScript变量可能包含两种不同的数据类型的值:

  1. 基本类型:
  • 简单的数据段
  1. 引用类型值
  • 可能由多个值构成的对象

传递参数:

ECMAScripte中所有函数的参数都是按值传递的

没有块级作用域

在其他类 C 的语言中,由花括号封闭的代码块都有自己的作用域

而对于 JavaScript 来说,由 for 语句创建的变量 i 即使在 for 循环执行结束后,也依旧会存在于循环外部的执行环境中。

-声明变量:

function add(num1,num2){
var sum = num1 + num2;
return sum;
}
var result = add(10,20);
alert(sum); //由于sum不是有效的变量,因此会导致错误!



function add(num1,num2){
sum = num1 + num2;
return sum;
}
var result = add(10,20);
alert(sum); //30!


如果初始化变量时没有使用var声明,该变量会自动被添加到全局环境中。

引用类型

创建Object示例的方式:

  1. 使用new操作符

var person = new Object();
person.name = "Nicholas";
person.age = 29;



  1. 使用对象字面量表示法
var person = {
name: "Nicholas";
age: 29;
}


使用对象字面量表示法时,属性名也可以使用字符串来表示

var person={} 与 var person = new Object()等价

Array类型

ECMAScript数组的每一项可以保存任何类型的数据

创建Array的方法:

  1. 使用Array构造函数
var colors = new Array();
var colors = new Array(20);
var colors = new Array("red","blue");

  1. 使用数组字面量表示法
var colors = ["red","blue","white"];

栈方法(先进后出):

入栈: .push();

出栈: .pop();

队列方法(先进先出):

入队:.push();

出队: .shift();

重排序方法:

.reverse(): 反转数组的顺序;

.sort(): 默认按升序排列数组项。

为了实现排序,sort()方法会调用每个数组项的toString()转型方法,然后比较得到的字符串。

即使数组中的每一项都是数字,sort()方法比较的也是字符串。

为了解决这种困境,sort()方法可以接受一个比较函数作为参数来决定如何排序 比较函数接收两个参数,如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等则返回 0,如果第一个参数应该位于第二个之后则返回一个正数

示例:

function compare(value1,value2){
if(value1 < value2){
return -1;
}
else if(value1 > value2){
return 1;
}
else{
return 0;
}
}


Tips:

reverse() 和 sort() 方法的返回值是经过排序之后的数组。

操作方法:

  1. .concat(): 这个方法会先创建当前数组的一个副本,然后将接受到的参数添加到这个副本的末尾,最后返回新构建的数组

例子:

var colors = ["red","blue","yellow"];var colors2 = colors.concat(["black",["white","brown"]);

  1. .slice(): 切片,该方法可以接受一个或者两个参数,即要返回项的起始和结束位置。

1个参数: 返回从该参数位置开始到当前数组末尾的所有项

2个参数: 返回起始和结束位置之间的项——但是不包括末尾项

示例:

var colors = ["red", "green", "blue", "yellow", "purple"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,4);

alert(colors2); //green,blue,yellow,purple
alert(colors3); //green,blue,yellow



返回列表 返回列表
评论

    分享到