整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

不上四六级官网,也可以查四六级成绩?

闻12月份的四六级成绩,在2月下旬要出了[思考],预估应该是2月16日吧

关于如何不用上官网就可以查成绩,我发现只要关注个公众号,让它帮你查就好了[奸笑],省事又省力,也不用管它什么时候出成绩,反正出了公众号就会推送给你

以下是步骤:

①关注“四六级考虫”公众号

②这个页面下滑

③找到这个,点展开

④点击图片里的,然后长按识别二维码,点“备份准考证,预约查分”,输入你的一些信息,这样等四六级出成绩就会通过公众号推送给你啦

注:准考证号可以到四六级的官网查,如果忘记了的话。

再推荐一个估分用的网址:http://study.baicizhan.com/mall/exams/cet4_test.html(百词斩四六级估分器)建议往低的估分,这样会比较保险点

作文和翻译以我知道的是不会打0分的正常来说都会高于5分(换算分的5分)

作文换算:

该图源于网络

翻译换算:

该图源于网络

PS:我是大学生,以上属于个人见解,没有打广告的意思

#四六级#​#英语四六级估分#

CSS强大的令人难以置信。

这次我们来用 CSS 实现这样一个功能:有多个宽度不同的标签水平排列,当外层宽度不足时,会提示超出的数量,演示效果如下

如果让我用 JavaScript来实现估计都有点折腾,毕竟宽度都是动态的,要监听各部分的尺寸变化,包括标签的位置和外层的宽度,总之不是一两行代码就能搞定的。

现如今,纯CSS也能完美的实现这样的效果,而且比 JS 实现更加简单,一起来看看吧

一、CSS 实现思路

很多时候,CSS并没有直接的实现方式,需要“绕”点弯路,将需求拆分成很多小点,然后逐一突破。

回到本文这里,其实有几个问题需要考虑:

  1. CSS 如何动态累计数字?
  2. CSS 如何知道哪些元素在容器之外?
  3. CSS 如何区分是否溢出(显示数量)

关于第3点,其实在之前这篇文章中有详细介绍,有兴趣可以回顾一下,非常有意思

纯 CSS 检测文本是否溢出

那么第一点,CSS有没有什么方式可以统计数量呢?

没错,相信很多小伙伴已经猜到了,就是利用 CSS计数器,示意如下

counter-reset: num var(--num);
counter-increment: num;
::after{
	content: "+"counter(num);
}

关于计数器,我之前也在很多文章中有用到

你可能不需要 JS!CSS实现一个计时器

如何让CSS计数器支持小数的动态变化?

还在使用定时器吗?CSS 也能实现电子时钟

动画合成小技巧!CSS 实现动感的倒计时效果

自定义计数器小技巧!CSS 实现长按点赞累积动画

然后是第二点,CSS有什么方式可以知道元素是出去了还是在视野之内呢?

如果是用 JS来判断的话,最稳妥的方式应该Intersection Observer(交叉观察者),相信很多同学都用过,这个在图片懒加载非常有用

交叉观察器 API - Web API 接口参考 | MDN (mozilla.org)[1]

那么,CSS中有什么类似的呢?没错,还是之前提到过的CSS滚动驱动动画。

不过这里用到的是视图进度,也就是关注的是元素自身位置,元素进入到容器范围之内就会触发动画,非常类似 JS中的Intersection Observer

tag{
  animation: appear;
  animation-timeline: view(inline);
  animation-range: contain;
}
@keyframes appear{
  to {
    background-color: #9747FF;
  }
}

这里就不详细介绍了,有兴趣回顾之前这篇文章

CSS 滚动驱动动画终于正式支持了~

好了,关键原理就这些了,我们需要做的就是想办法将「计数器」「元素进出容器范围」关联起来就行了,接着往下看

二、CSS 计数器

利用 CSS 计数器,我们可以很轻松的统计元素的数量。

先简单布局一下文章开头的例子,HTML如下所示

<div class="con">
  <a class="tag">HTML</a>
  <a class="tag">CSS</a>
  <a class="tag">JavaScript</a>
  <a class="tag">Flutter</a>
  <a class="tag">Vue</a>
  <a class="tag">React</a>
  <a class="tag">Svelte</a>
</div>
<span class="num"></span><!--用来计数的标签-->

然后美化一下

.con{
  display: flex;
  gap: 5px;
  padding: 5px;
  overflow: hidden;
}
.tag{
  padding: .2em .5em;
  background-color: #c49ef5;
  color: #fff;
  border-radius: 4px;
  animation: appear;
}
.num::after{
  content: "+0";
  padding: .2em .5em;
  background-color: #FFE8A3;
  color: #191919;
  border-radius: 4px;
}

这样就得到了水平排列的 tag 布局(超出隐藏),后面跟一个数字

现在我们定义一个计数器,然后通过每个tag进行累计,有多个tag相当于多少次累加,最后在::after中显示出来

.con{
  counter-reset: num;  /*计数器初始值,默认为0*/
}
.tag{
  counter-increment: num; /*计数器增量值,默认为1*/
}
.num::after{
  content: "+"counter(num); 
}

默认计数器的起始值是 0,每次累计是1,所以这里最后得到了7,这样就能实时统计元素的数量了

当然,我们也可以自定义这些默认值,比如

.con{
  counter-reset: num 10;
}
.tag{
  counter-increment: num -1;
}

这种情况下,起始值是10,增量值是-1,所以最后得到了3,如下

那么,该如何统计容器之外的标签数量呢?

三、CSS 滚动驱动动画

这里我们要利用CSS 视图进度时间轴,也就是观察元素自身的位置,在进入到容器范围之内执行动画。

拿上面这个例子,我们给标签添加一个动画,让标签在进入到容器之内时变个颜色,实现如下

.tag{
  animation: appear;
  animation-timeline: view(inline);
}
@keyframes appear{
  to {
    background-color: #4d47ff;
  }
}

由于是水平方向,所以这里需要设置view(inline) ,效果如下

好像不是很明显?这是因为动画是在整个视区内过渡的,我们可以改变动画时间线的区间animation-range,让这个动画在进出的一瞬间就变化

.tag{
  animation: appear;
  animation-timeline: view(inline);
  animation-range: contain;
}
@keyframes appear{
  from,to {
    background-color: #4d47ff;
  }
}

效果如下

那么,这个效果和前面的计数器有什么关联呢?

从效果上来看,在视区内会执行一个动画,如果在这个动画中加入计数器的累加会怎么样呢?先去除原先的累加器

.tag{
  /* counter-increment: num; */
}
@keyframes appear{
  from,to {
    background-color: #4d47ff;
    counter-increment: num;
  }
}

效果如下

可以看到计数器已经生效了,不过现在统计的在「可视区内」标签的数量。而我们要统计的是「可视区外」的数量,好像反过来了,如何实现呢?

这里有两种思路。

第一种,用总数减去可视区内的数量,不就行了吗?由于现在动画是针对可视区内的,我们可以给计数器设置一个初始值,就是总量,然后动画中给累加值设置为-1,就相当于减去当前数量了,实现如下

.con{
	counter-reset: num 7;
}
@keyframes appear{
  from,to {
    background-color: #4d47ff;
    counter-increment: num -1;
  }
}

这样就完美统计出了可视区外的数量了

还有一种方式,我觉得更加巧妙,需要反向思考。原理是重置当前的累加值,比如默认情况下,正常累加,进入可视范围,把累加值设置为0,不就相当于可视区外的正常累加了吗?

.tag{
  counter-increment: num;
}
@keyframes appear{
  from,to {
    background-color: #4d47ff;
    counter-increment: num 0;
  }
}

同样能达到相同的效果

现在基本已经达到我们需要的效果了

四、其他细节修正

首先是,在超出范围时,需要在边缘出添加一个半透明蒙层,这样体验效果会更好。

半透明蒙层很好实现,只需要添加一个水平渐变的mask遮罩就行了

.con{
  -webkit-mask: linear-gradient(to right, #fff calc(100% - 30px), transparent);
}

效果如下

那么,如何在没有超出时,不出现这个遮罩呢?

这个其实在之前的文章中有详细介绍了,建议回顾一下

纯 CSS 检测文本是否溢出

利用CSS滚动驱动动画,可以检测容器是否可滚动,也就是是否超出。所以我们只需要将遮罩放在滚动驱动动画里就行了,关键实现如下

.con{
  animation: check;
  animation-timeline: scroll(x self);
}
@keyframes check{
  from,to {
    -webkit-mask: linear-gradient(to right, #fff calc(100% - 30px), transparent);
  }
}

效果如下

还有一个问题,希望在没有超出的时候不显示后面的数量。

关于这个,我本来是打算用样式查询来实现,但是遇到了一个问题,由于样式查询只能匹配到子元素,所以不得不将显示数量的标签放到.con容器内。但是这样一来,mask遮罩就会出现问题,就像这样

遮罩层连同数量标签一起被裁剪了!

于是又想出了另一种方案,这个在以前的布局中其实用到的更多,那就是负margin

实现很简单,给标签容器一个的负margin-right,这样,右边的数量就会被左边的标签盖住,比如

.con{
  margin-right: -20px;
}

效果如下

是不是已经被盖住一部分了?我们继续向左偏移

.con{
  margin-right: -50px;
}

这样就完全看不到右边的数量了

那么,如何在超出时显示数量呢?这里就体现出负margin的好处了,可以借助前一个元素来隐藏后一个元素,在这里,我们直接在前面的动画中还原margin就行了

.con{
  animation: check;
  animation-timeline: scroll(x self);
}
@keyframes check{
  from,to {
    -webkit-mask: linear-gradient(to right, #fff calc(100% - 30px), transparent);
    margin-right: 0;
  }
}

这样就完美实现了文章开头所示效果了

你也可以访问以下链接来体验真实效果(Chrome115+)

  • CSS auto tag num (juejin.cn)[2]
  • CSS auto tag num (codepen.io)[3]

五、总结一下

以上就是本文的全部内容了,不知道你学会了吗?下面总结一下实现重点:

  1. 很多时候,CSS并没有直接的实现方式,需要“绕”点弯路
  2. CSS计数器可以实现数字累加
  3. CSS滚动驱动动画可以检测元素是否在可视范围之内
  4. CSS滚动驱动动画还能检测元素是否内容超出
  5. 计数累加器可以放在滚动驱动动画中,这样在动画触发时也就相当于计数器生效了,这样就能统计可视区的标签数量了
  6. 样式查询只能匹配到子元素,但是用子元素会受到mask遮罩的影响
  7. margin可以借助前一个元素来隐藏后一个元素

[1]交叉观察器 API - Web API 接口参考 | MDN (mozilla.org): https://developer.mozilla.org/zh-CN/docs/Web/API/Intersection_Observer_API

[2]CSS auto tag num (juejin.cn): https://code.juejin.cn/pen/7352565668073439241

[3]CSS auto tag num (codepen.io): https://codepen.io/xboxyan/pen/rNbYpZV



作者:XboxYan

来源-微信公众号:前端侦探

出处:https://mp.weixin.qq.com/s/_m5UxLQQtDU1GxbLRnCUhQ

TML 或超文本标记语言 允许 Web 用户使用元素、标签和属性创建和构造部分、段落和链接。然而,值得注意的是,HTML 不能被视为一种编程语言,因为它不能创建动态功能。

HTML有很多用例,即:

  1. 网页开发。开发人员使用 HTML 代码来设计浏览器如何显示网页元素,例如文本、超链接和媒体文件。
  2. 互联网导航。由于 HTML 被大量用于嵌入超链接,因此用户可以轻松地在相关页面和网站之间导航和插入链接。
  3. 网络文档。HTML 使组织和格式化文档成为可能,类似于 Microsoft Word。
  4. 还值得注意的是,HTML 现在被视为官方 Web 标准。万维网联盟 (W3C)维护和开发 HTML 规范,同时提供定期更新。

本文将介绍 HTML 的基础知识,包括它的工作原理、优缺点以及它与 CSS 和 JavaScript 的关系。

什么是 HTML?

HTML(代表超文本标记语言)是构成大多数网页和在线应用程序的计算机语言。超文本是用于引用其他文本片段的文本,而标记语言是告诉 Web 服务器文档的样式和结构的一系列标记。

HTML 是如何工作的

在国内的网站上找了一圈,这应该是介绍历史最细致的,长按保存手机里翻译

html文件

平均每个网站包含几个不同的信息 HTML 页面。例如,主页、关于页面和联系页面都将具有单独的 HTML 文件。

HTML 文档是以 .html 或 .htm 扩展名结尾的文件。Web 浏览器读取 HTML 文件并呈现其内容,以便互联网用户可以查看它。

html元素的三个部分

所有 HTML 页面都有一系列 HTML 元素,由一组标签和属性组成。HTML 元素是网页的构建块。标签告诉 Web 浏览器元素在哪里开始和结束,而属性描述元素的特征。

元素的三个主要部分是:

  • 开始标签 - 用于说明元素开始生效的位置。标签用左尖括号和右尖括号包裹。例如,使用开始标签 <p> 创建一个段落。
  • 内容——这是其他用户看到的输出。
  • 结束标签 - 与开始标签相同,但在元素名称前有一个正斜杠。例如,</p> 结束一个段落。

这三个部分的组合将创建一个 HTML 元素:

<p>这是在HTML中添加段落的方法。</p>

HTML 元素的另一个关键部分是它的属性,它有两个部分——名称和属性值。名称标识用户想要添加的附加信息,并且属性值给出进一步的说明。

例如,添加紫色和 font-family verdana 的样式元素将如下所示:

< p style= "color:purple;font-family:verdana" >这是在HTML中添加段落的方法。< /p >

另一个属性,HTML 类,对于开发和编程来说是最重要的。class 属性添加了可以作用于具有相同类值的不同元素的样式信息。 例如,我们将对标题 <h1> 和段落 <p> 使用相同的样式。样式包括背景颜色、文本颜色、边框、边距和填充,在 .important 类下。要在 <h1> 和 <p> 之间实现相同的样式,请在每个开始标记后添加 class=”important”:

<html>
<head>
<style>
.important {
  background-color: blue;
  color: white;
  border: 2px solid black;
  margin: 2px;
  padding: 2px;
}
</style>
</head>
<body>
<h1 class="important">This is a heading</h1>
<p class="important">This is a paragraph.</p>
</body>
</html>

大多数元素都有一个开始标签和一个结束标签,但有些元素不需要结束标签即可工作,例如空元素。这些元素不使用结束标签,因为它们没有内容:

< img src= "/" alt= "图像" >

这个图像标签有两个属性——一个src属性,图像路径,和一个alt属性,描述性文本。但是,它没有内容,也没有结束标签。

最后,每个 HTML 文档都必须以 <!DOCTYPE> 声明开头,以告知 Web 浏览器文档类型。使用 HTML5,doctype HTML public 声明将是:

< !DOCTYPE html >

最常用的 HTML 标签和 HTML 元素

目前,有 142 个 HTML 标签可以用于创建各种元素。尽管现代浏览器不再支持其中一些标签,但学习所有可用的不同元素仍然是有益的。

第二节将讨论最常用的 HTML 标签和两个主要元素——块级元素和内联元素。

块级元素

块级元素占据页面的整个宽度。它总是在文档中开始一个新行。例如,标题元素将位于与段落元素不同的行中。

每个 HTML 页面都使用这三个标签:

  • <html>标签是定义整个 HTML 文档的根元素。
  • <head> 标签保存页面标题和字符集等元信息。
  • <body>标签包含了页面上出现的所有内容。
<html>
  <head>
    <!-- META INFORMATION -->  
  </head>
  <body>
    <!-- PAGE CONTENT -->
  </body>
</html>

其他流行的块级标签包括:

  • 标题标签 - 这些范围从 <h1> 到 <h6>,其中标题 h1 的大小最大,当它们向上移动到 h6 时变得越来越小。
  • 段落标签——全部使用 <p> 标签括起来。
  • 列表标签——有不同的变体。<ol> 标签用于有序列表,<ul> 用于无序列表。然后,使用 <li> 标记将各个列表项括起来。

内联元素

内联元素格式化块级元素的内部内容,例如添加链接和强调的字符串。内联元素最常用于在不破坏内容流的情况下格式化文本。

例如,一个 <strong> 标签会以粗体呈现一个元素,而 <em> 标签会以斜体显示它。超链接也是使用 <a> 标记和 href 属性来指示链接目标的内联元素:

<a href="https://www.icodingdeu.com/" >点我!</a> 

HTML 演变——HTML 和 HTML5 有什么区别?

HTML 的第一个版本由 18 个标签组成。从那时起,每个新版本都带有添加到标记中的新标签和属性。迄今为止,该语言最重大的升级是 2014 年引入的 HTML5。

HTML 和 HTML5的主要区别在于HTML5 支持新类型的表单控件。HTML5 还引入了几个语义标签,可以清楚地描述内容,例如 <article>、<header> 和 <footer>。

HTML 的优点和缺点

就像任何其他计算机语言一样,HTML 有其优点和局限性。以下是 HTML 的优缺点:

优点:

  • 初学者友好: HTML 具有干净且一致的标记,以及较浅的学习曲线。
  • 支持领域广:该语言被广泛使用,拥有大量资源和庞大的社区。
  • 无障碍:它是开源的并且完全免费。HTML 在所有 Web 浏览器中本机运行。
  • 灵活的:HTML很容易与PHPNode.js等后端语言集成。

就像任何其他计算机语言一样,HTML 有其优点和局限性。以下是 HTML 的优缺点:

缺点:

  • 静止的 该语言主要用于静态网页。对于动态功能,您可能需要使用 JavaScript 或 PHP 等后端语言。
  • 单独的 HTML 页面 用户必须为 HTML 创建单独的网页,即使元素相同。
  • 浏览器兼容性 一些浏览器采用新特性的速度很慢。有时较旧的浏览器并不总是呈现较新的标签。

HTML、CSS 和 Javascript 是如何相关的

HTML 用于添加文本元素并创建内容结构。然而,仅仅建立一个专业的和完全响应的网站是不够的。因此,HTML 需要借助层级样式表 (CSS)和JavaScript来创建绝大多数网站内容。

  • CSS 负责样式,例如背景、颜色、布局、间距和动画。
  • JavaScript 添加了动态功能,例如滑块、弹出窗口和照片库。这三种语言是前端开发的基础。

结论

HTML 是 Internet 上的主要标记语言。每个 HTML 页面都有一系列创建网页或应用程序内容结构的元素。

HTML 是一种对初学者友好的语言,有很多支持,主要用于静态网站页面。HTML 与用于样式的 CSS 和用于功能的 JavaScript 一起使用效果最好。

我们还向您展示了一些在线教学课程,它们将有助于提高您的 HTML 知识或提供对 HTML 的基本理解。

如果您有任何其他喜欢的资源来学习 HTML,请在评论部分告诉我们。