[HTML、CSS]细节与使用经验

简介: 如果文中阐述不全或不对的,多多交流。

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)

https://developer.aliyun.com/article/1440721

出自【 进步*于辰的博客

1、细节锦集

  1. div~div表示选中前div后的所有同级div;
  2. 内联元素(inline)无法设置上、下外边距。故margin: 0 auto无效,同样对行内块元素(inline-block)无效;
  3. 在不作为字体的情况下,单一显示字符,如:<,需使用字符实体 \color{green}{字符实体}字符实体,格式:& + 实体名/实体号 + 分号。如:空格:
  4. 若一串字符由汉字、特殊字符、空格等组成,会自动换行;若仅包含数字、字母,且无空格,则视为单词,不换行;
  5. 实现本页面跳转:href = "#id"(id 是盒子id);
  6. js语句的优先级等同于行内式;
  7. 去除输入框被选中时的选中框:outline: none
  8. 滚动条:overflow: scroll
  9. transform覆盖,即当设置多个transform时,只有最后一个有效。其中,rotate会改变坐标轴方向;
  10. 定义动画时,所有位移、旋转、缩放等都相对于起始点;
  11. 修改网页标题 logo:
  12. 使用伪选择器创建的盒子属子级;
  13. H5之前,form 表单必须嵌套。H5中 form 表单不嵌套的方法:为设置 id,并指定的属性form为此 id;
  14. box-sizing样式表示是否将边框包含在width/height之内。取值:1、content-box表示不包含;2、border-box表示包含;3、inherit表示继承父级 box-sizing
  15. 设置href为函数名,可实现点击链接调用函数(前端框架普遍也如此定义);
  16. 一般情况下,表单提交时正则校验最好只设置一次,因为连续校验可能出错;

2、关于定位

  1. 相对定位(relative)的参照对象是自身
  2. 绝对定位(absolute)的参照对象是父级
    先检查父级标签是否设置定位方式(无论何种定位)。若有,则参照父级标签;否则,再检查父父级标签是否设置定位方式。依次类推。若都没有设置,则参照网页(指html/body标签,具体不确定,而结果相差不大)。

4、关于层级

  1. z-index可设置层级,前提是已设置定位方式,且若是相对定位,层级会增加;
  2. 盒子层级默认为0,若是将层级设置为负数,在不改变层级的情况下,盒子将不能操作;
  3. 层级会继承;
  4. 盒子的层级取决于这个盒子所在“家族”、已设置层级且“辈分”最大的盒子,其后代无法再修改层级(的确仍可以设置z-index,但无意义);
  5. 当层级相同时,后面的盒子比前面的盒子高(指距离我们眼睛越近);
  6. 定位不会改变层级,在第1点中说:“相对定位会增加层级”其实说的是第5点。若盒子设置为相对定位,则看起来此盒子会更高,而实际上层级未变;

5、全局标签属性

参考笔记一,P6.13。

  1. 设置 <table> 可编辑: contented:table = "true"
  2. hidden :隐藏标签,不占据空间。若要去除隐藏,需去掉 hidden,修改值无用;
  3. spellcheck = "true" 属性用于设置**可编辑**(第1点)的 input[type = text]<textArea> 或*编辑类* 标签进行拼写检查。

7、功能:滚轮控制(jq)

参考笔记一,P13.5/6。

实现思路:通过动画修改 scrollTop (滚动高度。“滚动高度”就是盒子的高度,即样式 top )。注: scrollTop 不是样式。


示例。

var footTop=parseInt($("footer").offset().top);
var se2Top=parseInt($("#section2").offset().top);
var se3Top=parseInt($("#section3").offset().top);
var se4Top=parseInt($("#section4").offset().top);
$(window).scroll(function(){
  var sTop;
  if($("html").scrollTop()!=0&&$("body").scrollTop()!=0){
    sTop=$("html,body").scrollTop()
  }else if($("html").scrollTop()==0){
    sTop=$("body").scrollTop()
  }else{
    sTop=$("html").scrollTop()
  }
  
  if(sTop>=se4Top){
    $("#scroll>li").eq(3).css("background","white").siblings().css("background","none")
  }else if(sTop>=se3Top){
   $("#scroll>li").eq(2).css("background","white").siblings().css("background","none")
  }else if(sTop>=se2Top){
    $("#scroll>li").eq(1).css("background","white").siblings().css("background","none")
  }else{
    $("#scroll>li").eq(0).css("background","white").siblings().css("background","none") }
})

说明:

  1. offset() :将标签转为对象。从而获取样式 top ,直接使用 css('top') 也可。

注意:若没有为盒子设置样式 topcss('top') 返回 undefined ,而 offset().top 返回`0`,因为后者底层进行了处理;

  1. scroll() :滚轮事件,当滚轮滚动时执行;
  2. scrollTop() :返回滚动高度;
  3. siblings() :返回除自身以外的所有同级盒子。


PS:时隔多年,只能请大家自行揣摩了。。。

8、关于 css

  1. 设置样式(css)的方法很多:外链式、内嵌式、内行式和属性设置。若需要令某一样式具有最高优先级,可在样式后加: !important
  2. 外链式与内嵌式无优先级之分,在于顺序。

9、功能:轮播

参考笔记一,P13.7、P14.8。

在这里插入图片描述


初步效果:

在这里插入图片描述


实现思路: 

从这张图,大家就大致可以知道轮播是如何实现的。需要三个样式:定时器( setInterval() )、平移( translate() / left )和过渡( transition )。


先附上这张平移图的实现源码:(PS:草草写的,给大家参考一下)

1、html。(快速生成代码: div>div>div*6>img ,在输入 g 的时候按 Tab)

<div id="border">
    <div id="scroll">
        <div><img src="" alt=""></div>
        <div><img src="" alt=""></div>
        <div><img src="" alt=""></div>
        <div><img src="" alt=""></div>
        <div><img src="" alt=""></div>
        <div><img src="" alt=""></div>
    </div>
</div>

2、css。

#border {
    width: 80px;
    height: 43px;
    border: 5px solid red;
    margin: 100px auto;
}
#scroll {
    width: 480px;
    height: 47px;
    position: relative
}
#scroll>div {
    float: left;
}

3、js。

var srcs = ['img/11.jpg', 'img/12.jpg', 'img/13.jpg', 'img/14.jpg', 'img/15.jpg', 'img/16.jpg']
$("#scroll img").each(function(i, e) {
    e.width = 80
    e.height - 45
    e.src = srcs[i]
})
var i = 0
var move = function() {
    $("#scroll").css('left', -80 * i + 'px')
    i++
    if(i == 6)
        i = 0
}
setInterval(move, 500)

i == 5 时(最后一张),将过渡归`0`,实现“瞬间”轮播,理论上可以实现“完美”效果(淘宝上经常出现的那种效果),实际上由于过渡需要时间,当原过渡开始时,程序继续执行,原过渡被“瞬间”过渡取代,偏移( translate() / left )也被取代,就出现了当轮播到第6张图时,瞬间回到第一张图的情况,故需要当 x == 6 时再执行“瞬间”过渡,但这样就出现了 0.5s 的停顿。


上面那张图还没有“过渡”效果,加上这个样式:

#scroll {
    transition: 0.5s
}

效果:

在这里插入图片描述


“理想”效果:当过渡到第6张图后,下 0.5s ,轮播到第2张图。(PS:时间挺长了,实现细节有些忘了)


“理想”效果实现方法 :使用动画( animation )。由于动画不会被取代,故当 x == 5 时轮播,即可实现。(源码找不到了,只能请大家自行理解补充)

最后

如果大家想了解一些前端原生知识点,可查阅博文《[HTML/CSS]知识点 》。


本文持续更新中。。。

相关文章
|
3天前
|
移动开发 前端开发 JavaScript
:掌握移动端开发:HTML5 与 CSS3 的高效实践
:掌握移动端开发:HTML5 与 CSS3 的高效实践
20 1
|
9天前
|
缓存 移动开发 前端开发
【专栏:HTML与CSS前端技术趋势篇】HTML与CSS在PWA(Progressive Web Apps)中的应用
【4月更文挑战第30天】PWA(Progressive Web Apps)结合现代Web技术,提供接近原生应用的体验。HTML在PWA中构建页面结构和内容,响应式设计、语义化标签、Manifest文件和离线页面的创建都离不开HTML。CSS则用于定制主题样式、实现动画效果、响应式布局和管理字体图标。两者协同工作,保证PWA在不同设备和网络环境下的快速、可靠和一致性体验。随着前端技术进步,HTML与CSS在PWA中的应用将更广泛。
|
9天前
|
前端开发 JavaScript 开发者
【专栏:HTML与CSS前端技术趋势篇】前端框架(React/Vue/Angular)与HTML/CSS的结合使用
【4月更文挑战第30天】前端框架React、Vue和Angular助力UI开发,通过组件化、状态管理和虚拟DOM提升效率。这些框架与HTML/CSS结合,使用模板语法、样式管理及组件化思想。未来趋势包括框架简化、Web组件标准采用和CSS在框架中角色的演变。开发者需紧跟技术发展,掌握新工具,提升开发效能。
|
9天前
|
前端开发 JavaScript UED
【专栏:HTML 与 CSS 前端技术趋势篇】Web 性能优化:CSS 与 HTML 的未来趋势
【4月更文挑战第30天】本文探讨了CSS和HTML在Web性能优化中的关键作用,包括样式表压缩、选择器优化、DOM操作减少等策略。随着未来趋势发展,CSS模块系统、自定义属性和响应式设计将得到强化,HTML新特性也将支持复杂组件构建。同时,应对浏览器兼容性、代码复杂度和性能功能平衡的挑战是优化过程中的重要任务。通过案例分析和持续创新,我们可以提升Web应用性能,创造更好的用户体验。
|
9天前
|
移动开发 前端开发 UED
【专栏:HTML与CSS前端技术趋势篇】渐进式增强与优雅降级在前端开发中的实践
【4月更文挑战第30天】前端开发中的渐进式增强和优雅降级是确保跨浏览器、跨设备良好用户体验的关键策略。渐进式增强是从基础功能开始,逐步增加高级特性,保证所有用户能访问基本内容;而优雅降级则是从完整版本出发,向下兼容,确保低版本浏览器仍能使用基本功能。实践中,遵循HTML5/CSS3规范,使用流式布局和响应式设计,检测浏览器特性,并提供备选方案,都是实现这两种策略的有效方法。选择合适策略优化网站,提升用户体验。
|
9天前
|
前端开发 开发者 UED
【专栏:HTML与CSS前端技术趋势篇】网页设计中的CSS Grid与Flexbox之争
【4月更文挑战第30天】本文对比了CSS Grid和Flexbox两种布局工具。Flexbox擅长一维布局,简单易用,适合导航栏和列表;CSS Grid则适用于二维布局,能创建复杂结构,适用于整个页面布局。两者各有优势,在响应式设计中都占有一席之地。随着Web标准发展,它们的结合使用将成为趋势,开发者需掌握两者以应对多样化需求。
|
9天前
|
前端开发 JavaScript 搜索推荐
【专栏:HTML 与 CSS 前端技术趋势篇】HTML 与 CSS 在 Web 组件化中的应用
【4月更文挑战第30天】本文探讨了HTML和CSS在Web组件化中的应用及其在前端趋势中的重要性。组件化提高了代码复用、维护性和扩展性。HTML提供组件结构,语义化标签增进可读性,支持用户交互;CSS实现样式封装、布局控制和主题定制。案例展示了导航栏、卡片和模态框组件的创建。响应式设计、动态样式、CSS预处理器和Web组件标准等趋势影响HTML/CSS在组件化中的应用。面对兼容性、代码复杂度和性能优化挑战,需采取相应策略。未来,持续发掘HTML和CSS潜力,推动组件化开发创新,提升Web应用体验。
|
9天前
|
前端开发 UED
【专栏:HTML与CSS实战项目篇】创建一个具有复杂布局的电商详情页
【4月更文挑战第30天】构建复杂布局的电商详情页涉及页面结构规划、样式设计和交互效果实现。首先规划顶部导航栏、商品图片展示区、商品信息区、用户评价区和相关商品推荐区。在样式设计上,注重色彩搭配、字体选择、布局与间距及图片处理。交互效果包括图片放大、添加到购物车按钮、滚动监听和评论互动,以提升用户体验。实际开发中需考虑跨设备兼容性和用户体验优化。
|
9天前
|
移动开发 前端开发 JavaScript
【专栏:HTML与CSS实战项目篇】使用HTML5与CSS3制作一个动态表单验证页面
【4月更文挑战第30天】本文介绍了使用HTML5和CSS3创建动态表单验证页面的方法。首先,简述HTML5用于构建网页内容,CSS3用于描述样式。接着,分四步展示实现过程:1) 设计包含输入框和提示信息的表单结构;2) 使用CSS3创建样式,增强视觉效果;3) 使用JavaScript监听输入事件,动态验证表单并显示错误信息;4) 测试和调试确保跨平台兼容性。通过学习,开发者能掌握创建带验证功能的表单,提升用户体验。
|
9天前
|
前端开发 测试技术 UED
【专栏:HTML 与 CSS 实战项目篇】实现一个在线产品展示页面
【4月更文挑战第30天】本文介绍了使用HTML和CSS创建吸引人的在线产品展示页面的实战步骤,包括页面设计规划、HTML结构搭建、CSS样式设计、具体页面实现、交互效果添加、优化与提升。通过简洁布局、产品列表和详情页设计,实现易用且具吸引力的展示效果。优化图片和代码,提升性能,以助企业在数字时代脱颖而出。