当前位置: 首页 > news >正文

前端HTML+CSS查漏补缺——仿制百度搜索首页的一些思考

在像素模仿百度搜索首页的时候,在实现的时候,遇到了一些值得记录的点。

在这个过程中,也顺便看了看百度的源码,感觉很有意思。

对了,QQ截屏里面获取到的颜色,是不大正确的,会有点误差。

这是我实现的效果,去掉了部分效果。

比如说,超链接的hover效果,以及更多页面的展开等效果。

最重要的是,没有写JS代码,只是一个页面展示而已。

首先就是顶部header的标签,我这里用的是无序列表,我一直以为大伙都是这么做的,直到我看到百度的源码。

才发现百度是直接采用了超链接标签进行:

少些一点代码,这何曾不是另外一种优雅呢?

用百度源码的方式实现这个展示效果还是蛮简单的,使用flex布局即可。

但是,更让我吃惊的在后面——对于更多内容的显示:

居然是做了div嵌套的,hover到更多的时候切换显示。

这个时候,想起了框架的重要性,如果没有框架的话,只能一个一个手打/CV了。

框架提供的便利性还是很强的,直接用个for循环即可实现这个效果。


当然,这不是最重要的。

下图是一个平平无奇的百度搜索框,如果你去检查可以发现,这不是一个简单的搜索框——里面还有不少display: none的元素。

不过,这都不是重点。

我关注的重点在于,怎么实现这么优雅的效果?

这是我一开始做出来的效果:

可以看出这个效果不够优雅,因为获取焦点之后的颜色不一致,显得很突兀。

这简单啊,直接:

:focus { bordor: 2px solid #蓝色 }

但是,在输入这段代码之后,获取焦点之后,边框依旧是黑色的。

上面的GIF,就是在加入了这段代码之后录制的。

如果你只加上outline: #蓝色的话,也是不行的,效果是这样的:

但是,如果你两个一起使用的话,居然可以实现跟百度一模一样的效果:

这里有点疑惑。

但是突然又懂了,你可以这么理解:

Outline是一个CSS属性,用于在元素周围绘制一条线,这条线不占据布局空间,通常用于突出显示元素。

如果Outline去掉了,再改变border颜色,这个时候就可以实现上面的效果了。


但是,这还不够优雅。

因为百度原来的效果里,右边边框是这样的:

而我写的:

虽然实现跟百度一样的效果就很简单,直接把右边框的颜色改为跟搜索的一致即可。


相较于百度这种完成度高的页面来说,里面很多东西都是包含了操作的,但是我这个只是模仿页面而已,并没有任何的操作的。

感兴趣的,可以自己去模仿一下百度里面的JS逻辑。

http://www.lryc.cn/news/417372.html

相关文章:

  • 【Python】实现一个个人理财助手小程序
  • 【GCC】结合GPT4 延迟梯度学习2:延迟梯度的计算及阈值更新
  • 灰豚数字人MotionAI大模型完成备案,模型已超百亿参数!
  • zsh 配置 docker 自动补全
  • 鸿蒙第三方应用.hap打包、安装流程。
  • leetcode:找到字符串中所有字母异位词
  • C语言学习
  • Java面试题:MySQL高频面试题
  • 使用js给数字进位,比如23333元进位成2.33万元
  • Java二十三种设计模式-享元模式(12/23)
  • 腾讯云AI代码助手助力软件开发体验分享
  • Leetcode力扣刷题——182.查找重复的电子邮箱
  • idea中好用的插件
  • spring 代码执⾏ (CVE-2018-1273)漏洞
  • 幺麻子曲折上市路:毛利率近四年下滑不少,存货出现较大增长
  • Sol盗u、sol链上的USDT盗窃:警惕恶意智能合约
  • jupyter for c++
  • TCP Analysis Flags 之 TCP Window Full
  • 相关性检验
  • 【python】Django运行报错分析:ImproperlyConfigured 错误解决办法
  • AS01/AS11 创建固资和子资产
  • vue3数字动画插件countup.js
  • aspeed2600 GPIO分析与适配ipmitool power status, ipmitool power on/off
  • 在C#中配置ini文件以及封装ini类
  • 使用git上传代码到github
  • 滚珠花键:新能源汽车传动系统的核心动力传递者
  • LeetCode 149, 347, 31
  • 操作系统(信号处理)
  • [MRCTF2020]Ezpop
  • 24暑假算法刷题 | Day27 | 贪心算法 I | LeetCode 455. 分发饼干,376. 摆动序列,53. 最大子数组和