精华内容
下载资源
问答
  • 拉勾教育训练营
    千次阅读
    2020-11-30 20:44:23

    一、个人现状

    • 非名牌大学

      非985或211学历的我,拿着一个普通大学的本科学历在找工作时真是无奈,稍好一些的公司,都对学校有要求。对学历没啥门槛的公司去了也是做做增删改查,公司也没有什么大牛,干很久也不会有多大的提高。

    • 非计算机相关专业

      我大学是学建筑的,高考那会赶上建筑热就学历建筑类的专业,毕业工作后,发现自己根本不喜欢,所以转行干java开发,但非科班出身的程序员真的是很难找工作,我在单位也做过招聘面试,公司为了降低招聘成本,只能拿这些量化指标来筛选简历,虽然不能绝对说明真实水平,但不这么晒选一下的话,招聘真的很费时间。

    • 非自学天才

      目前在一家传统企业干高级开发,技术较为落后,想要通过学习提高自己,早点跳槽换个环境,可一次次的下决心学习,都一次次的半途而废,原因有很多,首先自己不知道从何学起,大家可能会说网上搜啊,有很多的,的确是的,我也这么干的,但效果并不怎么好,因为,网上规划的学习路线,和我的工作几乎都是脱离开的,因此并不能在工作中运用巩固,导致学的不深入,练的又少,学完没多久就忘,再加上身边也没人一起学习互相鼓励,自己自制力又差些,这样慢慢地就停滞了。

    • 困于当下的增删改查

      在传统企业小公司,对技术的需求并不强烈,技术指标要求也很低,能够按时交付使用才是大事,干完一个项目,立马被调去另一个项目,甚至同时干很多个项目,工作内容也是千篇一律,无非就是理解业务然后CURD,没有什么技术含量,就是着急,工作时间被压榨到了极限,几乎没有时间去学习。干了两年最后感觉身体快累垮了,技术又没多大提高。想要跳槽都没有自信。只好继续苦撑,似乎被困在了当下。

    二、未来诉求

    • 提高专业能力

      经过思考,我认为要改变以上现状,首先还是要提高自己的专业能力,不管学历、专业如何,只要水平高自然会有公司要。

    • 提高薪资待遇

      因为是转行干的IT,自己年龄也不小啦,买房结婚的压力自然随之而来,薪资再没有起色,真的就愧对父母了,升职加薪不奢求,但至少要做到,自我升值,工作加薪。

    • 进入大公司好平台

      之前总是听到有人说,大公司分工明确,只能学习自己负责的部分,小公司什么都能接触到,可以学到更多,综合能力更强,建议先在小公司锻炼几年再进大公司,现在想想真是扯淡,要不是进不去大公司,谁愿意在小公司待在,首先,进大公司工作几年,小公司随便进,反过来可就没那么容易,再者,大公司流程规范,管理精细,有利于提高个人的专业性和工作规范性,还有就是,大公司学习环境好,公司牛人多,身边都是游戏的人自己自然也不会太差。

    • 做更有意义的工作

      这一点更不用说了,我早已受够了基础的增删改查工作,既没提高也没成就感,反而很枯燥像是“体力活”,所以未来想做真正的“技术活”,不是谁都能干的了的活,这样才能体现自己在工作中的价值,跟老板谈薪资也更容易。

    三、面临问题

    • 自制力差

      想要改变,就要学习,想要学习,就要坚持到底,很遗憾大多数人都折在这里,我也不例外,很多次立志,很多次失败。仿佛有个魔咒无法摆脱。

    • 无人指导

      除了自制力差,还有就是没人带着,自己不知道如何去学,跟着网上搜的教程,要么就是听不太懂,要么就是听懂了,但过几天就忘,因为工作用不上,练了也记不住。缺乏一个学习环境和过来人的指导。

    • 课程质量差

      因为自己学效果不好,所以就花钱报班学,报了XX学院的直播课程,是比自己学要清晰一些,但也遇到了问题,因为是直播课,有的老师总是翻车,在课上找Bug,感受很不好,一场直播下来俩个多小时,本来自己时间就不多,每次听老师讲的墨迹或者翻车调试,就十分恼火。次数多了,也就不愿意听了,听见老师的声音就烦,录播也不想听。

    • 学完就忘

      还有一个大问题就是学完记不了多久就忘,因为工作用的多少太少,学的多少用不到,没有练习的环境,缺乏练习自然记不住,也学的不扎实。

    • 内推机会

      因为已经深知小公司的坑有多深,所以再找工作,真的不想还进小公司,无非是从这坑跳那坑,没什么意义,但我非名牌大学非科班出身想进大公司谈何容易,除非有内推,否则简历根本通不过。

    四、寻求突破

            带着以上问题,我开始寻找出路,幸运的是没过多久我偶然看到拉勾招聘开始做教育培训了,因为之前一直在拉勾上看招聘信息,所以我一下就想到拉勾做培训那肯定有内推机会啊,学历和专业“双劣势”的我,立马来了精神,开始了解拉勾教育的《java高薪训练营》课程。

    • 课程设计

      因为以前也了解过别的课程,所以我直奔我最关注的点,那就是是否有实操练习,令我意外的是不仅有实操练习,而且还是以作业的形式,还有导师批改,不达到标准,不能开启下一模块的学习权限,这一点深得我心,我在学习上最大的问题就是自制力差和学完就忘,作业通过才能开启下一模块的学习,类似于打游戏闯关一样,每过一关都是一个正向反馈,很有成就感,更能激励我坚持下去,还有就是作业有老师批改,既可以保证学习效果又能及时发现自己的问题,避免理解错误耽误时间。

    • 课程体系

      其次就是课程内容了,这一点也很吸引我,因为拉勾是做互联网招聘的,所以对于招聘职位需要哪些技能自然了如指掌,看过课程大纲后也证明了我的猜测,几乎覆盖了我关注的所有java开发工作的岗位需求。有很多分布式架构下的技术,平时工作根本接触不到,是我十分需求的。

    • 学习方式

      学习方式是以录播+每个模块一次直播的形式,之前学的课程都是直播课,老师备课不充分,经常翻车找问题,很耽误时间,所以这种直接跟录播学习的方式我倒是觉得很适合我,质量会比直播高些,因为是录播,所以还能设置播放速度,特别适合我这种学习时间有限的人,可以2倍速播放,想想都爽。每个模块结束有一次直播,老师会带着复习和补充本模块的知识点,梳理总结形成知识体系,并针对大家提出的问题进行答疑。

    • 授课思路

      这个课程的授课思路是我目前最喜欢的,没有之一,例如学习Tomcat,首先老师会介绍Tomcat是什么,要解决什么问题,解决这些问题要实现哪些功能,然后自定义手写实现主要功能,一步一步,引导学员了解框架组成和实现原理,听着特别清晰易懂。然后在这些基础上再深入讲解源码,剖析原理。基础很差的我,跟着也都听懂了,以前学别的课一上来就开始讲源码真心听不懂。

           现在,我已经学了有两个月了,以前从来没有坚持学习这么长时间过,挺感谢班主任的关心和催促,跟着安排的进度学,再过几个月就有资本跳槽面试了,正好能赶上明年的金三银四,开心。希望自己好好学,到时候能有一个大厂的内推面试机会,以前朋友也给内推过,但简历过去就没有消息了,还是拉勾厉害,能内推直接面试,拯救了我学历和专业“双劣势”的困境。

    更多相关内容
  • 本次是小豪第一次在公网平台上发表自己的文章,主要是分享加入拉钩自动化测试训练营后的日常学习笔记,分享给各位积极向上学习、拼搏的打工人!!!!!!!!!
  • -[hash].bundle.js [name]-[chunkhash:8].bundle.js【推荐】 [name]-[contenthash].bundle.js 总结: 以上是前端高薪训练营课程里第二部分的前端工程化实践关于webpack打包的一些配置的讲解,以及一些注意事项,...

    1、快速上手

    npm init -y
    
    npm i webpack webpack-cli
    
    webpack

    webpack配置文件

    // webpack.config.js
    // 导出一个对象
    module.exports = {
        entry: '',
        oupput: {
            filename: 'bundle.js',
            path: path.join(__dirname, 'output'), // 输出目录:绝对路径
        }
    }
    // 导出一个函数
    let config = {}
    module.exports = (env, argv) => {
        if (argv.mode === 'development') {
            config.devtool = 'source-map';
        }
        if (argv.mode === 'production') {
            //...
        }
        return config;
    }

    3、工作模式:mode

    modehttps://webpack.docschina.org/configuration/mode/icon-default.png?t=L892https://webpack.docschina.org/configuration/mode/

    •  production(默认):生产模式
    •  development:开发模式
    •  none:不使用任何默认优化选项
    // 配置文件
    module.exports = {
      mode: 'development',
    };
    // cli
    webpack --mode=development

    4、打包结果运行原理

    • 输出的是一个立即执行函数,接受一个modules参数,调用时传入一个数组
      • 数组每个元素都是一个函数,对应源代码的每一个模块,实现模块的私有作用域
    • 立即执行函数内部
      • 定义一个对象用于缓存加载过的模块
      • 定义一个`__webpack_require__`函数,用于加载模块
        • 判断模块是否加载过,加载过则读取缓存
        • 创建新的对象
        • 调用模块对应的函数,传入模块对象、模块导出对象、__webpack_require__函数
      • 在`__webpack_require__`上挂在一些数据、工具函数
      • 调用`__webpack_require__(0)`

    5、资源模块加载

    添加相应的`loader`处理非JS文件

    • `css-loaser`将css文件打包成一个模块,如果需要使用可使用`style-loader`配合
    • `style-loader`是将css通过`style`标签,将css代码注入
    • `注意:` use数组执行顺序`从右到左`
    • `使用:` 在js文件内`import`引入非js类型文件,建立依赖关系
    module.exports = {
        module: {
            rules: [{
                test: /.css$/,
                use: ['style-loader', 'css-loader']
            }]
        }
    }

    5.1、文件资源加载器

    `file-loader`

    基本过程:

    • 打包时遇到图片等文件,根据配置匹配到对应的文件加载器
    • 将导入的文件拷贝到输出目录
    • 将输出路径作为当前模块的返回值返回
    • `注意:` 可以配合`publicPath` 指定输出目录,例如:`dist/`,源代码里需要做拼接,所以必须带`/`
    // png
    module.exports = {
        output: {
            filename: 'bundle.js',
            path: path.join(__dirname, 'dist'),
            publicPath: 'dist/' // 注意这里
        },
        module: {
            rules: [{
                test: /.png$/,
                use: ['file-loader']
            }]
        }
    }

    5.2、URL 加载器

    // Data URL 格式
    // 协议 媒体类型和编码 文件内容
    
    data:[<mediatype>][;base64],<data>

    `url-loader` 和 `file-loader`

    设置`limit`属性,表示低于该值的会被转换成base64,超出则单独提取存放

    module.exports = {
        module: {
            rules: [{
                test: /.png$/,
                use: {
                    loader: 'url-loader',
                    limit: 10 * 1024 // 10Kb 
                }
            }]
        }
    }

    5.3、其他常用加载器

    • 编译转换类:`css-loader`等
    • 文件操作类:`file-loader`等
    • 代码检查类:`eslint-loader`等

    5.4、`babel-loader` 处理ES新特性

    `@babel-core` 和 `@babel-preset-env`

    实际babel只是一个平台,需要通过不同的插件转换代码具体特性

    module.exports = {
        module: {
            rules: [{
                test: /.js$/,
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: ['@babel-preset-env']
                    }
                }
            }]
        }
    }

    5.5、加载资源的方式

    • 支持ESM标准的`import`声明
    • 支持CommonJS标准的`require`函数
      • 默认导出需`require('xxxx.js').default`
    • 支持AMD标准的define函数和require函数
    • Loader加载非JS触发的资源加载
      • css文件里的`@import`、`url`
      • html里的`src`属性

    5.6、开发一个loader

    实现一个自己的 `markdown-loader`

    实际就是一个输入到输出的一个转换,类比管道的概念,可以对同一个资源依次使用多个loader

    基本步骤:

    • 导出一个模块,传入`source`,即资源内容
    • 返回修改后的内容
    • 必须是JS代码
    • 可交给下一个loader处理
    // webpack.config.js
    module.exports = {
        module: {
            rules: [{
                test: /.md$/,
                use: './markdown-loader.js'
            }]
        }
    }
    // markdown-loader.js
    const marked = require('marked');
    module.exports = (source) => {
        // console.log(source)
        // return “console.log('hello')”
    
        // 第一种:返回JS可用于执行
        const html = marked(source)
        return `module.exports = ${JSON.stringfy(html)}`
    
        // 第二种:返回html字符串交给下一个loader处理
        // 需要修改webpack.config.js里的use: ['html-loader', './markdown-loader.js']
        return html
    }

    6、webpack 核心工作原理

    • 根据配置的`entry`找到打包入口
    • 根绝js文件里的`import`等语句找到该文件依赖的其他模块,解析每个模块依赖的其他模块,形成一个依赖关系树
    • 遍历该关系树,找到每个资源对应的文件
    • 根据配置里`rules`里的`loader`处理模块
    • 最终打包输出到配置里`output`指定的位置

    7、webpack 插件

     Plugin API

    compiler 钩子

    • 在钩子上挂载任务
    • 一个函数或者是一个包含apply方法的对象

    7.1、webpack 常用插件

    • `clean-webpack-plugin`
    • `html-webpack-plugin`
    • `copy-webpack-plugin`

    8、增强开发体验

    8.1、webpack dev server

    减少磁盘读写,直接写入内存,httpserver直接读取内存

    // 安装
    npm install webpack-dev-server --save-dev
    // 使用
    module.exports = {
        devServer: {
            contentBase: '', // 额外的静态资源路径
            proxy: { // 代理配置
                '/api': {
                    target: 'https://api.github.com', // http://localhost:8080/api/users ---> https://api.github.com/api/users
                    pathRewrite: { // 重写:// http://localhost:8080/api/users ---> https://api.github.com/users
                        '^/api': ''
                    },
                    changeOrigin: true
                }
            }
        }
    }

    8.2、sourceMap

    映射源代码和转换后的代码关系

    基本格式:# sourceMappingURL=xxxxx.map

    所有配置

     特点:

    • eval: 是否使用eval执行代码
    • cheap: 是否包含行信息
    • module: 是否能够得到loader之前的源代码

    推荐使用

    • 开发环境:cheap-module-eval-source-map
    • 生产环境:none/nosources-source-map

    8.3、webpack自动刷新

    HMR:模块热替换

    --hot

    • 需要手动处理
    • 样式模块可自动处理
    • 注意:
      • 热替换失败,退回自动刷新机制,可使用`hotOnly`替代
      • `module.hot`需要提前判断
    // webpack.config.js
    module.exports = {
        devServer: {
            hot: true, // 热替换失败,退回自动刷新机制
            hotOnly: true
        },
        plugins: [
            new webpack.HotModuleReplacementPlugin({
                // Options...
            })
        ]
    }
    
    // xx.js
    if (module.hot) { // webpack.HotModuleReplacementPlugin 提供的
        module.hot.accept('./yy', () => {
    
        })
    }

    9、生产环境优化

    • 针对不同环境生成不同的配置文件
      • `webpack-merge`:合并配置
      • `scripts`: --config
    • webpack4 增加了一些默认的优化配置
      • `webpack.DefinePlugin`:在`编译`时配置一个`全局常量`
        • 注意:定义的值会原封不动显示
      • `tree shaking`:默认 `mode` 为 `production` 会开启
        • none模式:借用 `optimization` 里的属性
          • usedExports: true // 删除未引用的代码
          • minimize: true // 压缩
          • concatenateModules: true // 合并模块,输出为一个模块
        • 引用babel会失效??
          • 最新版本并不会失效,是因为babel默认开启ESM
          • 可以在babel的`env`插件里强制设置`module`属性,注意这里是数组套数组
      • 副作用:
        • optimization 设置 sideDffects: true:开启功能
        • packages.json 设置 sideDffects: 表示没有副作用
          • false/[]
      • 代码分割:分包、按需加载
        • 多入口打包:多页应用 + 公共模块提取
          • 多页设置:
            • entry: 对象
            • output.filename: '[name].bundle.js'
            • HtmlWebpackPlugin添加 chunks: ['index'] --> 对应entry的key
          • 公共模块提取:
            • optimization.splitChunks: { chunks: 'all' }
        • 动态导入:
          • import('../xx.js').then(() => {})
          • 魔法注释:import(/* webpackChunkNmae: 'aaa' */'../xx.js').then(() => {}) // 为打包出的模块添加一个名字
      • 代码压缩:
        • 默认生产模式会自动压缩,但是通过`mini-css-extract-plugin`link注入的css不会,需要手动`optimization.minizier`里通过插件压缩
          • `optimize-css-assets-webpack-plugin`
          • `terser-webpack-plugin`
      • 生产模式给文件添加`hash`
        • [name]-[hash].bundle.js
        • [name]-[chunkhash:8].bundle.js【推荐】
        • [name]-[contenthash].bundle.js

    总结:

    以上是前端高薪训练营课程里第二部分的前端工程化实践关于webpack打包的一些配置的讲解,以及一些注意事项,webpack是我们开发过程中必须掌握的利器,所以基本的配置以及使用是必须要知道。在学习过程中,除了对基本配置的巩固以及需要注意的点和优化事项都讲解的很详细,课程还有实践以及最新webpack5的课程,学无止境,待我后期更新~~~

    展开全文
  • 前端技术领域发展至今,已经不仅仅是 PC 端浏览器网页的开发这么简单了。现在很流行一个词来形成前端技术领域,叫做大前端。但是,至少到目前为止我个人还没有看到一个对大前端的解释非常不错的。...

    前端技术领域发展至今,已经不仅仅是 PC 端浏览器网页的开发这么简单了。现在很流行一个词来形成前端技术领域,叫做大前端。但是,至少到目前为止我个人还没有看到一个对大前端的解释非常不错的。不过,接下来的内容我个人觉得是目前我看到对大前端的解释是最好的了。

    向服务端进发

    众所周知,一个完整的 Web 应用应该包含服务端和客户端两个部分。很多人认为前端程序员更多地是开发客户端这一部分,但现在比较主流的是服务端中的一部分是需要前端程序员进行参与的。

    8a040cd7e3b309c2564dcc6852e6bc06.png

    现在前端程序员需要参与到服务端中 MVC 架构的 View 层的开发工作中的,但是这样就会导致服务端开发被割裂开来。为了解决这样的问题,演变出来了一种新的 Web 应用架构。

    a2943e099949d1316e5b3fa56a07896d.png

    实际上就是将服务端一分为二,一个是传统的服务端,一个是分裂出来的 BFF。这样演变之后,前端程序员的职责就从单纯的客户端,变成了服务端的 BFF 和客户端了。

    66fa7b79022386747f953a956a6fe969.png什么是 BFF?

    BFF 即 Backend For Frontend,也就是服务于前端的后端开发模式。也就是服务端设计 API 时会考虑前端的使用,比如在服务端直接进行业务逻辑的处理、渲染 HTML 页面、合并接口请求和数据缓存等等。

    向泛客户端扩展

    除了上述这一点以外,再回到客户端。前端领域所涉及到的客户端已经从单纯的 PC 端浏览器网页,扩展到了各种各样的终端形式。PC 端:Web 应用和桌面应用

    移动端:Web 应用、App、小程序等

    119ec6d186ab0a32d4a39803662ed4ba.png

    比如各大超级应用推出的小程序这种,首先选择的就是前端技术栈进行开发。换句话讲,目前各种终端的开发主要是依靠前端技术栈进行的。

    程序员在未来的发展来看,将来主要会分为云、端以及人工智能三方面的开发,而前端程序员主要就是负责端开发的。

    02419b0bcc24806edf24e6627be4d642.png

    前端到大前端

    综上所述,前端技术领域发展到现在被称为大前端,实际上应该在原来的 PC 端浏览器网页应用的基础上,再增加服务端的 BFF 和各种终端。

    688eb9b3fe6a0149b2f7b1bdd5a65bb7.png

    所以,想要从前端向大前端过渡的话,前端程序员需要从以下三个方面进行提升和扩展:BFF(中间层)开发

    泛客户端开发

    传统 Web 技术的深入

    展开全文
  • 「大前端高薪训练营」-_拉勾教育_v2.21
  • CSS CSS概述 ​ css产生背景: HTML被发明开始,样式就以各种形式存在,最初的HTML只是包含很少的显示属性。 ... ... 发展过程 ...作用:静态的修饰网页,并且可以配合各种脚本语言动态的对网页各元素进行格式

    CSS

    CSS概述

    ​ css产生背景:

    HTML被发明开始,样式就以各种形式存在,最初的HTML只是包含很少的显示属性。

    随着HTML的成长,为了满足页面设计者的需求,HTML添加了更多的显示功能,比如文本格式化标签。

    随着这些功能的增加,HTML变得越来越乱,页面越来越臃肿。

    发展过程
    发展过程
    ​ css概念:

    css全称cascading style sheets,层叠样式表,是一种用来表现HTML的文件样式的计算机语言。

    作用:静态的修饰网页,并且可以配合各种脚本语言动态的对网页各元素进行格式化。

    ​ 前段三层技术:

    HTMLCssJavaScript
    结构层样式层行为层
    从语义的角度搭建网页结构从美观的角度描述页面样式从交互的角度去描述页面的行为

    css的出现,实现了网页结构和样式的相分离,拯救了混乱的HTML。

    HTML不需要再去实现样式相关的内容,只需要呈现与语义化的结构内容,让css去实现样式,css网页的美容师

    ​ css的组成:

    层叠式

    css中始终贯穿的加载特性

    • 层叠性
    • 继承性

    样式

    定义如何在浏览器中显示HTML元素

    比如:文字文本、背景、盒模型的样式、浮动、定位等等

    css代码四种书写方式

    css的代码根据书写位置的不同分为四种书写方式

    内嵌式、内联式、外联式、导入式

    内联式样式表

    内联式,也被习惯叫做行内式

    书写位置:在HTML标签上的style属性中书写css样式

    所有css样式属性总体组成标签style属性的属性值。

    1

    ​ 内联式缺点:

    1. 内联式必须写在标签上,完全没有脱离HTML标签
    2. css样式代码让标签结构繁重,不利于HTML结构的解读
    3. 一个内联式css代码,只能给一个标签使用,如果是多个标签具有相同样式,同样的css代码需要书写很多次,增加代码量

    (后端可能会使用内联式编写css代码,实际工作不推荐用)

    内嵌式样式表

    • 书写位置:在HTML文件中,标签内部有一个

    您好

    ​ 内嵌式特点

    优点缺点
    实现了样式和结构的初步分离。css只负责样式,HTML负责结构结构与样式没有完全分离,代码依旧书写在HTML文件的

    外联式样式表

    • 外链式css,也可以叫做外链式css,外部css
    • 书写位置:在一个单独的拓展名为.css的文件中
    • 书写语法:内部代码与内嵌式样式表中的

    直接在.css文件中书写css规则。

    ​ 外联式引用:

    • 外联式样式表必须引入到HTML文件中,才能正常运行加载。

    • 引入方式:在HTML中的标签内部使用标签进行引入。

    • 标签属性:
      属性名属性值说明
      relstylesheet表示引入的外部文件与HTML之间的关系,样式表
      hrefcss文件路径hypertext reference,超文本引用
      typetext/css表示加载时代码按照纯文本形式的css代码加载。HTML5可以省略type的属性不写

      外联式的优点:

      1. 实现了HTML和css完全分离
      2. 多个HTML文件可以同时使用一个css 文件,便于提供公共css,减少代码量。
      3. 可以实现一个css变化,多个HTML页面同时变化的需求,减少工作量。
      4. 一个HTML文件可以引入多个css文件,可以实现一个页面中css代码分层

    导入式样式表

    • 书写位置:在内嵌式样式表

    导入式问题:

    • 导入式样式表的作用于外联式样式表基本相同。
    • 但是由于导入式在浏览器中加载时,会在HTML结构加载完毕后再进行编译,如果网速比较慢时,会导致网页出现没有css样式的效果,给用户的体验感不好。(会优先加载HTML结构,在加载css样式)
    • 实际工作中较少使用导入式,推荐使用外联式样式表

    实际运用

    小型案例:可以使用内嵌式css

    实际工作、大型网站项目:推荐使用外联式css。

    css样式规则语法

    ​ css规则:

    • css规则主要由两个主要的部分组成:选择器,以及一条或多条声明。
    p {width: 10px;font-size: 14px;}
    

    选择器 {属性名: 属性值;}

    注意事项;

    1. 每条属性后面的分号必须写,如果不隔开会导致后面所有的代码加载错误。
    2. css中所有属性与属性之间对空格、换行、缩进不敏感。

    css注释语法

    一个清晰易懂的css代码,离不开css注释的合理添加

    /内容/

    vscode快捷键:ctrl+/。

    html注释语法

    <!—内容—>

    css代码书写风格

    代码风格是实际开发中的书写方式,并非强制标准。

    展开格式

    开发过程使用,代码可读性强,便于调错。

    <style>
        div {
            width: 200px;
            height: 200px;
            background-color: skyblue;
        }
    </style>
    

    展开方式:将代码进行换行 缩进 空白书写

    紧凑格式

    上传服务器时使用,减少不必要的空白字符,压缩文件大小,利于传输。

    <style>
        div{width: 200px;height: 200px;background-color: skyblue;}
    </style>
    

    可以在浏览器中搜索css压缩 进行软件自动压缩

    css中的英文可以使用大写,也可以使用小写。

    建议:css中的选择器和样式属性、属性值等都使用小写英文,特殊情况出除外。

    空格规范

    • 选择器与大括号之间保留一个空格
    • 冒号后面,属性值前面,保留一个空格

    css常用样式

    文本三属性

    • 颜色color
    • 字体font-family
    • 字号font-size

    颜色color

    作用:给文字设置颜色

    属性名k:color

    属性值v:颜色名、颜色值

    颜色名颜色值
    颜色名就是使用英文的英文单词进行表示颜色值指用具体颜色的数值表示:rgb模式和十六进制模式写法

    需要记忆的常用颜色名:
    在这里插入图片描述

    rgb模式:

    是根据红绿蓝三原色进行混合而成的颜色模式。

    每个原色的取值范围是0~255,一共256个数值。

    书写方法:rgb(红,绿,蓝)

    常用的rgb色值:

    红色:rgb(255,0,0) 绿色:rgb(0,255,0) 蓝色:rgb(0,0,255)

    黑色:rgb(0,0,0) 白色:rgb(255,255,255)灰色:rgb(128,128,128)
    在这里插入图片描述

    0代表颜色的亮度最低,所以所有色值为0,代表黑色。

    十六进制模式

    • 十六进制模式:是rgb模式的一种简化写法,使用十六进制的数字字符去替换十进制0~255的数字。
    • 十六进制:逢十六进一,每个位数上只能出现09,af之间的字符。
    • 书写为颜色值时,红、绿、蓝每个色值都要使用两位数的十六进制进行替换。

    ​ 0——0
    255——ff

    • 书写方式:使用#开头,后面连续书写红、绿、蓝颜色的十六进制的两位数值。

    ​ 常用的颜色十六进制色值:

    红色:#ff0000 绿色:#00ff00 蓝色:0000ff

    黑色:#000000 白色:#ffffff 灰色:#808080

    ​ 十六进制颜色值简写模式:

    如果红、绿、蓝三个原色的色值每一个都是由重叠的数字组成,可以将重叠的数字简化成一个进行书写。

    比如:红色:#f00 绿色:#0f0 蓝:#00f

    ​ 类似#808080是不能进行简化的。

    常用属性font-family

    作用 :定义元素内文字的字体

    属性名k:font-family,字体属于font综合属性的一个单一属性。

    属性值v:名字名称,必须包裹在一对引号中,属性值可以有多个,值之间用逗号分隔。

    font-family(字体库家族)

    常用字体:

    中文:宋体(SimSun) 微软雅黑(Microsoft YaHei)

    英文:Arial consolas

    如果不设置字体属性,不同的浏览器会有自己的默认字体。

    注意事项:

    • font-family可以设置多个字体,在实际加载时只会选择一种加载,选择的依据是按书写顺序进行,如果浏览器不支持第一个字体,则会尝试下一个,直到找到第一个支持的字体。

    • 浏览器中加载的字体是用户机器中自带的,如果用户的电脑中没有设置的字体则加载失败,需要查找下一个,因此,必须设置一个所有机器都具备的通用字体作为后路

    • 中文字体中一般带有英文可以加载的字体效果,为了避免对英文字的字体影响,建议将英文字体写在属性值最前面。(看主要用英文字体,还是中文)

    • 实际应用:
      首选字体要根据设计图确定,最后需要设置备用字体

    常用属性-font-size

    作用:设置文字字体大小

    属性名k:font-size,字号属于font综合属性的一个单一属性。

    属性值v:可以使用相对单位长度,也可以使用绝对单位长度。推荐使用相对长度单位。
    单位

    注意事项:

    1. 如果不设置文字字号大小,不同的浏览器有自己的默认加载字号,比如Chrome、IE,默认显示 字号为16px
    2. 不同的浏览器也有自己默认的最小加载显示字号,如果设置的字号低于最小字号,都以最小字号加载,0除外。Chrome浏览器最小加载字号为8px,IE浏览器最小可以支持1px的字号。

    实际应用:

    • 网页中的最小设置字号必须是12px,如果低于12px会出现兼容问题。现在网页中普遍使用14px+。
    • 尽量使用12px,14px,16px等偶数的数字字号,ie6等老式浏览器支持奇数会有bug。
    • 实际工作的字号,需要以设计图为准。

    常用属性-font-size

    作用:设置字体是否加粗显示

    属性名:font-weight,属于font的一个单一属性

    属性值有两种方式:单词类型、数字类型。

    • 单词类型:

    在这里插入图片描述常用的是normal和bold

    b标签可以使文字加粗显示。
    在浏览器控制台可以看到b标签自带font-weight:bold属性。由此可见标签添加内容的语义化,真正控制样式的是css。

    • 数字类型:

    100-900之间的整百数字
    数字越大,文字显示越粗
    其中400等价于normal,700等价于bold

    常用属性-font-style

    作用:设置文字是否倾斜显示

    属性名:font-style,属于font属性的一个单一属性值

    属性值:单词。

    属性值:
    在这里插入图片描述
    常用的是italic。非常类似,不会细究区别。

    常用属性-line-height

    作用:设置的是一行文字实际占有的高度,文字字号在行高中是垂直居中的

    属性名:line-height,属于font属性的一个单一属性

    行高是文字占有的真正高度

    在这里插入图片描述
    文字14px,多出的是因为有行高

    属性值:
    在这里插入图片描述
    实际工作中,行高的数值通过设计图获取,量取数值时需要使用一些辅助软件工具。(Fireworks)
    Fireworks:
    软件初始值设置为:选中文字工具,在属性栏中将平滑消除锯齿,跟改为不消除锯齿,方便文字的像素点清晰显示。
    在这里插入图片描述

    量取行高的步骤:

    • 确定文字字号和字体。使用文字工具书写内容相同的文字,调整字号和字体,直到两个文字完全重合。制作时,设置一个与内容文字颜色差异较大的字体颜色。
    • 根据已知字号和字体,在书写上下对齐的两行文字,调整属性面板上的行高单位为像素,更改数值大小,直到两行文字对齐,得到的就是行高。

    在这里插入图片描述
    可以这样做类似的字体:(不精确)
    在这里插入图片描述

    font综合

    字号、字体、行高、加粗、斜体都是font综合属性中的单一属性。

    font属性五个单一属性的值可以进行合写,属性值可以有2到多个,值之间用空格进行分隔。
    写法注意:

    1. font进行综合书写时,必须有字号和字体,而且必须字号在前,字体在后,不能颠倒顺序。
    2. font属性经常对字号、字体、行高进行合写,书写顺序必须是字号、行高、字体,字号和行高之间必须用/进行分隔。
    3. 如果font属性需要设置加粗和斜体,两个属性值只能写在最前面,两个值可以互换位置。后面的字号、行高、字体不能更改位置。

    常用文本属性-text-align

    作用:设置文本水平对齐方向

    在盒子中,无论是单行文本,还是多行文本,都会向对应方向对齐。

    属性值:三个方向的单词
    属性值:

    属性值作用
    left居左对齐,大部分标签的默认值
    center居中对齐
    right居右对齐

    常用文本属性-text-decoration

    作用:设置文本整体是否有线条的修饰效果

    属性值说明
    none没有修饰,大部分标签的默认值
    overline上划线
    line-through中划线,删除线、del标签:标签的默认值
    underline下划线,a标签:标签的 默认值
    在浏览器控制台,a标签有一个默认的属性值underline
    <del>删除线</del>
    <a href="">超级链接</a>
    

    常用文本属性-text-indent

    作用:设置段落首行是否进行缩进。

    属性值说明
    px单位表示首行缩进多少像素
    em单位表示首行缩进几个中文字符的位置
    百分比表示缩进文字所在标签的父级标签的width属性值的百分比
    常用的是em单位:自动参考文字大小的宽度。
    属性值区分正负,正数表示向右缩进,负数表示向左缩进。

    盒模型

    盒模型又叫框模型,包含了五个用来描述盒子位置、尺寸的属性,分别是宽度width、高度height、内边距padding、边框border、外边距margin
    常见的盒模型区域:

    • 盒模型的属性中,根据不同属性的效果,可以划分区域。
    • 书写元素内容区域:width+height
    • 盒子可以实体化的区域:width+height+padding+border
    • 盒子实际占有的位置:width+height+padding+border+margin
      如果想在浏览器中具体看到一个盒子占有的实际位置,需要设置盒子可以实体化的三属性。

    实体化属性:
    实体化

    宽度 width

    作用:设置可以添加元素内容的区域的宽度
    属性值:

    属性值说明
    auto默认值。浏览器可计算出实际的宽度
    px像素值定义宽度
    %定义参考父元素宽度width的百分比宽度
    特殊应用:
    • 如果一个元素不添加width属性,默认属性值为auto,不同的元素浏览器会根据其特点自动计算出实际的宽度,例如div元素等独占一行,其width属性的值会自动撑满父元素的width区域,如果是span元素等不需要独占一行的,其width属性的值是内元素内容自动撑开的宽度。
    • body元素比较特殊,不需要设置width属性,宽度会自动适应浏览器窗口的宽度。

    高度 height

    作用:设置可以添加元素内容的区域的宽度
    属性值:

    属性值说明
    auto默认值。浏览器可计算出实际的高度
    px像素值定义高度
    %定义参考父元素宽度height的百分比高度
    特殊应用
    • 如果一个元素不添加height属性,默认属性值为auto,浏览器会自动计算出实际高度,也就是内部元素内容自动撑开的高度。元素的高度自适应内部内容的高度。

    内边距 padding

    作用:
    设置的是元素的边框内部到宽高区域之前的距离。

    特点:可以去加载背景,不能书写嵌套的内容。

    属性值:常用px为单位的数值
    padding是一个复合属性,可以根据内边距的方向不同划分为四个方向的单一属性(padding-top,padding-right,padding-bottom,padding-left)。

    简写
    有时为了简化书写,一般习惯将四个方向的单一属性进行合写成padding属性。
    padding属性值:可以有1-4个值,值之间用空格进行分隔。
    根据四个方向属性值不同,padding有多种值的书写表示方式。
    根据padding的属性值的个数不同,区分了四种表示法:

    • 四值法: padding:1px 2px 3px 4px;浏览器展示为上右下左四个方向的值 顺时针
    • 三值法:padding:1px 2px 3px;浏览器展示的是先上,后左右再下
    • 两值法:padding:1px 2px;浏览器展示为先上下和后左右的值
    • 一个值:padding:1px;四个方向同一个值
    padding-left: 2px;
    padding:1px;
    

    可利用层叠法,设置其中一个属性不同。不要弄反顺序

    边框border

    作用:设置的是内边距外面的边界区域,作为盒子的实体化的最外层。

    属性值:右三个值组成,分为线的宽度、形状和颜色。
    border属性是一个复合属性,根据划分依据不同可以有两种单一属性的划分方式。

    • 按照属性值的类型划分:
      线宽:border-width,设置边框的宽度
      属性值:常用px形式的数值,四个方向都有边框,属性值类似于padding,也有四种值得写法。
      线型:border-style,设置边框的线条形状。属性值:形状的单词,总体也是类似于padding的综合属性写法。
      在这里插入图片描述
      主要记住前几个。
      边框颜色:border-color

    • 根据边框的方向划分
      上边框:border-top
      右边框:border-right
      下边框:border-bottom
      左边框:border-left
      每一个单一属性都必须于复合属性border一致,设置三个属性值。

    • 根据方向和类型,进一步细分
      类似border-top的单一方向属性,也可以根据属性值类型继续进行单一属性划分。
      单一属性值写法:border-方向-类型

    外边距 margin

    作用:设置盒子和盒子之间的距离
    特点:不能渲染背景
    属性值:常用px
    外边距的设置方式和内边距-一模一样的。

    盒模型拓展

    虽然我们了解了盒模型对的五个属性的基本语法,但是在实际工作红还有更多的方法和技巧需要掌握,所以,我们需要拓展对盒模型的应用知识。

    清除默认样式

    大部分标签都有一个浏览器默认样式,会对布局造成一些影响。为了避免默认样式对整体布局效果造成影响,一定要清除默认样式。

    • 盒模型属性中内外边距:大部分容器级标签都有默认边距,要么用标签选择器的并集方式,要么通配符清除。
    • ul标签和ol标签两种列表有默认的列表前缀:清除list-style属性。
    • a标签的默认样式,顺带设置页面中常用的a的公共样式:设置color和text-decoration
    • 清除默认加粗效果:设置font-weight
    • 还可以给body标签设置整体文字样式,让大部分标签全部去继承。(比如:文字颜色、大小、字体)

    删除你要书写的标签的内外边距。

    height的应用

    高度 height 作用:设置可以添加元素内容的区域的高度。

    属性值:
    在这里插入图片描述
    根据不同的需求,高度属性可以设置,也可以不设置:

    • 设置的话,盒子占有的高度就固定了,后面的元素会紧挨着加载。
    • 不设置的话,高度会自适应标签内部的内容。

    如果设置了盒子的高度,盒子内部的元素加载高度超出了父级,会出现溢出效果。可使用overfolow属性对溢出的部分的效果进行展示。
    在这里插入图片描述
    演示:

    div {
                width: 200px;
                height: 200px;
                border: 1px solid red;
                overflow:scroll;
            }
    

    在这里插入图片描述
    类似于textarea的滚动条,但是scroll是两个方向的滚动。

    特殊应用

    如果一个元素不添加 height 属性,默认属性值为auto,浏览器会自动计算出实际 高度,也就是是内部元素内容自动撑开的高度。元素的高度自适应内部内容的高度。

    必须不设置高度:

    要求盒子高度必须自适应内部内容的高度。
    或者设置height的属性值是自动的。

    应用场景:
    在这里插入图片描述
    内容多少,撑开多少,不会溢出。

     div {
                width: 200px;
                height: auto;
                border: 1px solid red;
                /* overflow:scroll; */
            }
    

    或者不给盒子设置高度。

    居中

    在网页中常见元素或者文字居中的效果。

    文本水平居中:
    水平居中:text-align,不论多行文本或者单行文本都可以设置。

    文本垂直居中:

    1. 单行文本垂直居中:line-height行高等于盒子高度height。
      在这里插入图片描述
    2. 多行文本垂直居中:让元素(放文本的元素)高度自适应或者正好等于多行文字的高度,设置元素内外边距上下值相同。

    设置高度文本是这样显示的,上下间距是不一样的,不居中的。
    在这里插入图片描述
    不设置高度,且上下距离边框有间距:
    在这里插入图片描述
    元素的垂直居中:
    一个元素内部嵌套的子元素,在父元素中居中。
    垂直居中:与多行文字类似,让父元素高度自适应,子元素高度自动撑开父级元素的高度,再给父元素设置相同的上下边距。

    元素的水平居中:
    针对类似

    样式上必须独占一行的盒子,如果子盒子宽度低于父盒子宽度,可以设置盒子的margin值,水平方向的值都设置auto。
    在这里插入图片描述

    父子盒模型

    一般情况下,一个父元素内部可以放一个或多个子元素,而且多个子元素要排成一 行显示,必须保证父元素的宽度一定要足够(不考虑溢出情况),需要遵循一个设 置尺寸的规律:所有子元素的宽度加在一起不能大于父元素的宽度 width。

    父元素的width ≥ 所有子元素width + padding + border + margin

    如果不满足条件:要么多余的子元素掉下来不能在一排,要么溢出父元素

    错误效果:
    在这里插入图片描述
    在这里插入图片描述
    计算或量取尺寸时一定要计算准备,一像素都不能偏差。
    在这里插入图片描述
    特殊情况:盒模型自动内减
    父子盒模型中,只有一个子元素,且子元素是类似

    标签必须占一行的。 不设置子元素的 width 属性,子元素的 width 属性值会自动加载父级元素的 width。 如果同时设置了子元素水平方向的 padding 和 border 、margin,不需要手动去进 行内减,子元素的 width 会自动收缩尺寸。 子元素所有的水平方向的位置所有属性的加和等于父元素的 width 。

    margin的塌陷现象

    margin 塌陷现象
    margin 塌陷现象:在垂直方向如果有两个元素的外边距有相遇的,浏览器中加载的 真正的外边距不是两个间距的加和,而是两个边距中值较大的,边距值小的塌陷到 了边距值大的值内部。

    同级元素塌陷
    上面的元素有下边距,下面的元素有上边距,两个边距相遇,真正的盒子间距离是 较大的那个值。
    在这里插入图片描述
    父子元素塌陷
    父子元素之间也会出现 margin 塌陷,父元素和子元素都设置了同方向的 margin-top 值,两个属性之间没有其他的内容进行隔离,导致两个属性相遇,发生 margin 塌陷。

    css选择器

    在内嵌样式中和外部css中,要想将css样式应用于特定的HTML元素中,首先需要找到该目标元素,这时需要用到css中的选择器。

    • 选择器:选择需要添加样式的HTML标签的一种方法、模式。

    • css2.1版本中有七种选择器:

      基础选择器标签选择器、id选择器、类选择器、通配符选择器
      高级选择器(衍生)后代选择器、交集选择器、并集选择器

    标签选择器

    • 通过标签名去选择标签元素
    • 书写方式:标签名

    标签名 {

    属性: 属性值;

    }

    优点:

    • 可以选中所有的同名标签,设置所有同名标签的公共样式。

    缺点:

    • 只能实现全选,不能对局部的标签添加特殊样式

    id选择器

    • 通过标签上的id属性去选择标签
    • 书写方式:#id属性值
    • 选择范围:只能选中一个标签
    • id命名规则:必须以字母开头,后面可以有字母、下划线、横线,严格区分大小写。每个id属性值必须是唯一的,不能与其他的id同名(相当于身份证号)。

    #id {

    属性名: 属性值;

    }

    id选择器特点:

    • 缺点:id选择器只能实现单选,不能完成多选的功能

    类选择器

    • 通过标签的class属性去选择标签
    • 书写方式:.class属性值
    • 选择范围:页面中所有的class属性值相同的标签
    • class命名规则:必须以字母开头,后面可以有字母、下划线、横线,严格区分大小写。class属性值可以与其他的class相同(相当于名字)。

    .class {

    属性值:属性名;

    }

    类选择器特点:

    1. 多个不同的标签,不区分标签类型,只要class属性值相同,都可以被同一个选择器选中。
    2. 一个标签的class属性可以有多个属性值,值之间用空格隔开,每个属性值组成的选择器,都可以这一个标签,每个选择器后面的样式都会添加给同一个标签

    类选择器的特殊应用

    原子类:在css中提前设置一些类名,每个类选择器后面只添加一条css样式属性,这些属性会在页面中经常被使用,后期可以不需要多次书写属性,只要将对应的类名添加给相应的标签即可。

    类选择器的优点

    1. 通过类选择器多选,选中多个标签,添加公共样式
    2. 一个标签可以被多个选择器同时选中,可以将所有样式进行分离,分别提取公共样式和单独样式,节省代码量。

    实际工作中,我们通常有一个使用规律:

    类上样式(css),id上行为(JavaScript)

    通配符选择器

    • 通过一个特殊符号选择页面上所有的标签
    • 书写方式:*
    • 选择范围:包含标签在内的所有标签

    通配符特点和应用

    • 优点:可以实现全选,简化书写

    • 缺点:通配符效率低,设置的部分公共样式不是所有的标签都需要添加,如果使用通配符选择器,会让不需要的标签也加载一次样式,导致浏览器多做无用的工作。

    注意:实际上线的网站不允许使用*去清除默认内外边距。普通案例,为了节省书写,可以使用通配符。

    后代选择器

    • 通过标签之间的嵌套关系去选择元素,基本组成部分就是基础选择器
    • 后代选择器也叫包含选择器
    • 书写方式:空格表示是后代,基础选择器中间使用空格分隔,空格前面的选择器选中的标签必须是后面选择器选中标签的祖先级、
    • 选择范围:通过后代选择器中前面的一系类基础选择器缩小选择范围,最终由最后一个选择器确定选中的标签
    • 注意:后代选择器必须满足所有的后代关系才能被选中,后代关系不一定只能是父子关系

    .box ul li p {

    属性值: 属性名;

    }

    后代选择器特点

    • 优点:减少class属性的定义使用,选择效率高

    交集选择器

    • 通过一个标签之上满足所有的基础选择器的需求去选择标签
    • 书写方式:基础选择器进行连续书写,如果有标签选择器参与交集,必须书写在开头
    • 选择范围:选择的是能满足所有基础选择器需求的标签,如果一个条件不满足都不能被选中
    • 比较常见的是标签与类的交集
      在这里插入图片描述

    交集选择器的跟那个多写法

    • 交集选择器可以进行类名的连续交集,需要满足更多的条件才能被选中
    • .demo.ps{ } ie6不支持连续交集的写法,只认最后一个
    • 交集选择器可以作为其他高级选择器的组成部分

    并集选择器

    • 不同选择器选中的元素都要设置相同的样式,多次书写相同的样式属性对代码造成浪费,可以将前面六种选择器进行并集书写,相当于一种简化写法
    • 书写方式:将多个选择器中间用逗号隔开,最后一个后面不能加逗号

    h2,.demo { }

    并集选择器用途

    1. 如果多个标签有公共样式,但是不能用一个选择器选中,可以使用并集写法
    2. 可以使用标签选择器并集写法,进行默认样式清除,替换通配符的功能
    3. css3增加了更多选择器

    继承性

    css概念中,除了前面提到的样式外,还有一个重要的概念就是层叠式,层叠式是贯穿整个css的一个性质,包含继承性和层叠性。

    • 如果一个标签没有设置过一些样式,它的某个祖先级曾经设置过,在浏览器中该标签也加载了这些样式,这些样式都是从祖先级继承而来的,这种现象就是继承性。
    • 能够被继承的样式是所有文字相关样式属性,其他属性都不能被继承。
      在这里插入图片描述

    继承性的应用

    • 继承性是一个很好的性质,可以将页面中出现最多的文字样式设置给一个较大的祖先级标签比如,后期所有的后带标签都可以从继承。

    层叠性

    同一个标签被多个选择器选中,应继承哪一个样式属性:

    使用层叠性解决冲突,多个选择器在进行加载的过程中,最终只有一个属性会加载成功,它会层叠、覆盖掉其他的属性

    判断方法(优先级):
    在这里插入图片描述

    选择器权重:

    *<标签选择器<类选择器<id选择器(权重高的层叠权重低的)

    十个类的权重不等于1个id,无这种换算关系

    如果选择器权重相同,需要比较css代码的书写顺写,后写的层叠先写的(后加载,就近原则,继承父亲)

    important和行内式

    !important关键字

    • 如果再比较选择器权重的过程中,遇见一个!important关键字,可以将某条csss样式属性的权重提高到最大(不会改变选择器的权重)
    • 书写位置:在某个css属性的属性值后面加空格!important

    注意:

    1. 就近原则中,不需要比较选择器权重,important会失效
    2. important不能提升选择器的权重,只能提升某条属性的权重到最大。

    (important只会在比较权重时产生效果)

    行内式

    行内式权重高于所有其它选择器,但是低于!imporant

    • 行内样式与外链式与内联式样式比较权重时,行内式的权重最高
    • 但是与important关键字相比权重要低

    未深刻记忆内容

    • 需区分内联样式和行内样式的区别

    行内样式又称为内联样式

    内嵌式样式表,书写位置在标签内部的

    • class属性值命名规则

    必须以字母开头,后面可以跟字母、横线、下划线,严格区分大小写。

    • !important会将制定的一条样式属性的权重提升到最大,而不是提升选择器权重到最大

    拓展

    学习方法

    1. 养成定时学习习惯(28天) ,可以选择比如定时早上七点学习 。

    2. 记笔记,需要学会总结 ,要把知识转化为自己的 ,经常复盘。

    3. 案例代码需要多练习(认识、熟悉、理解),做到从自己仿照写到自己可以徒手写代码,不借助任何外力。最少三遍练习,不要轻视任何一行代码

    4. 要多和同学交流 多帮助别人 在交流中巩固知识。

    5. 前期写代码要多自己手敲,不要太依赖快捷键。

    6. 作业
      在这里插入图片描述

      试着写写它的样式结构,看看应该用什么标签把它呈现出来

    7. Chrome开发工具

    Chrome开发者工具

    开发者工具面板

    • Elements:查找网页源代码中的任一元素,手动修改任一元素的属性和样式且能实时在浏览器中得到反馈
    • console:记录开发者工具中的日志信息,且可以作为与js进行交互的命令行
    • Sources:断点调试JS
    • Network:从发起网页页面请求Request后分析HTTP请求后得到的 各个请求资源信息(包括状态、资源类型、大小、所用时间等),可以根据这个进行网络性能优化。
    • Applicantion:记录网页资源加载的所有资源信息,包括数据存储(LocalStorage、SessionStorage、indexDB、Web SQL、Cookies)、缓存数据、字体、图片、脚本、样式表等。
    • Security:判断当前网页是否安全
    • Audits:对当前网页进行网络利用情况、网页性能方面的诊断,并给出一些优化建议。比如列出所有没有用到css文件等。

    要学会在控制台调试代码,了解面板的内容。

    SEO权重标签

    SEO(搜索引擎优化)操作的时候,经常会用到一些HTML标签,来突出网页中关键词或重要的主题,这种标签我们称为HTML权重标签,例如h系列、stronge、em、b、u、i、font。

    结构化、语义化清晰地网站,更利于网站的搜索排名,要善于使用语义化明确的标签描述网页结构,例如h系列、p、ol、dl等,以及h5新增的标签。

    SEO标签属性

    SEO(搜索引擎优化)操作的时候,也会用到一些HTML属性标签,来突出网页中关键词,例如meta标签的name属性(keywords、description),超链接和图片的title、alt属性。

    在这里插入图片描述
    约定俗成,建议3-5个关键词

    a标签的href属性值不同,a标签有不同的作用。

    1. url地址:绝对路径会自动跳转到对应的链接的页面,相对路径时会点击自动下载文件并发生跳转,锚点url会自动跳转到也免得对应位置,可以用于页面滚动。
    2. #:单独的一个符号,代表跳转到页面得顶部,可以用于制作返回顶部。
    3. js调用

    调用js的某个方法,不建议使用

    <a href= "javascript:void(0);"οnclick=“js_metnod()”>

    调用js的某个方法,不发生页面跳转,,有兼容问题

    <a href= "javascript:void:;"οnclick=“js_metnod()”>

    调用js的某个方法,不发生页面跳转

    (有小手标志,不发生页面跳转)

    展开全文
  • //返回处理的结果 } } 六、Change变形延伸 题目变形 对长整型数据进行反转 对字符串进行反转 延伸扩展 在面对一些数字类型题目时,思考是否可以利用数学特殊性来解决问题 拉勾教育算法课程网址
  • 二、After The Way To Lagou 1、课程简介 拉勾教育推出的大数据开发高薪训练营,课程内容直击互联网大厂,大公司的大数据所需要用到的知识,整个课程分成了十四个阶段。 作为已经加入拉钩的打工人,给大家展示一下...
  • 类加载过程 加载模块 1.通过完全限定类获取定义该类的二进制字节流; 2.将该字节流表示的静态存储结构转换为方法区的运行时数据;...lang.Class对象,它表示类,并充当类在方法区域中的各种数据的访问点 ...
  • 拉勾教育Java训练营学习感受/学习笔记–MyBatis 文章目录拉勾教育Java训练营学习感受/学习笔记--MyBatis1、普通jdbc操作流程以及问题1.1 流程1.2 问题2、自定义持久层框架思路2.1 使用端2.2 框架端2.2.1 读取数据库...
  • 三. 编写Java程序、编译、运行 3.1 编写第一个java程序 说明: Java源程序由类组成,class声明帮助编译器理解它是一个类的声明 Java程序默认都是由main方法开始执行 一个Java源程序中可以有多个类,但是只能有...
  • 程序计数器:是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。程序中的分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器完成。由于多线程是通过线程轮流切换并分配处理器...
  • SQL语句操作_MySQL核心查询1 文章目录 SQL语句操作_MySQL核心查询1 1 单表查询 1.1 排序 1.2 聚合函数 1.3 分组 1.4 LIMIT关键字 2 SQL约束 2.1 主键约束 2.2 非空约束 ... 文章内容来源于拉勾教育数据分析实战训练营
  • 业务流程&数据分析方法 文章目录 业务流程&数据分析方法 一、业务流程 1.1 大致思路 1.2 具体流程 二、分析方法 2.1 分组分析 2.2 对比分析 2.3 矩阵...2.9 RFM建模分析 文章内容输出来源:拉勾教育数据分析实战训练营
  • 学习资源:拉勾教育 代码的拆分实现 /* 编程实现费式数列的计算并打印 功能类/封装类 */ public class Fee { // 自定义成员方法实现费式数列中第n项数值的计算并返回 int show(int n) { int ia = 1;...
  • SQL语句操作_MySQL核心查询2(多表查询) 文章目录 SQL语句操作_MySQL核心查询2(多表查询) 1 外键约束 1.1 外键 1.2 级联删除 2 笛卡尔积 3 内连接 3.1 ... 5 SQL JOINS 总结 文章内容来源于拉勾教育数据分析实战训练营
  • 拉勾教育数据分析实战训练营】--Tableau学习笔记-重点回顾1【拉勾教育数据分析实战训练营】--Tableau学习笔记-重点回顾1以下是我搜罗的一些官方优秀case分享:1、...type=featured2、...
  • Python语言基础 1 Python语法特点 1.1 注释规则 # 这是一个单行注释 ''' 这是一个多行注释 ~~~ ''' ... 这也是一个多行注释 ...​ 保留字是Python中已经被赋予特殊意义的一些单词,开发程序时,不可以把这些保留字字...
  • 拉钩JAVA高薪训练营笔记汇总

    千次阅读 2020-11-10 12:26:03
    详情地址:https://blog.csdn.net/qq_42082278/article/details/109604005 第七阶段、分布式搜索引擎进阶 该阶段通过检索工具包Lucene对进行分词、倒排索引等概念进行理论讲解,并使用Elasticsearch对拉勾亿级数据...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,605
精华内容 642
关键字:

拉勾教育训练营