网站相关

总结《茶韵》中踩的坑(已解决)

2019-05-15  本文已影响0人  苏倾落

一.index页面

1.基于jquery的三级导航菜单。

①先实现二级普通下拉菜单,动态下拉菜单实现步骤:

(1)利用jquery的ready()函数来实现在页面整体加载完成后执行特殊效果。

(2)在function()内部实现主菜单的鼠标进入事件,所有的下拉效果都在这个事件中。

(3)先停止播放所有特效动画并隐藏下级菜单。

(4)获取下级菜单对象,重新设定下级菜单位置。

(5)停止下级菜单其他动画并使其下拉。

(6)添加下级菜单的鼠标移出事件,让下级菜单向上收起。

应用到的jquery函数有:ready()、mouseenter()、stop()、hide()、parent()、next()、css()、offset()、height()、slideDown()、slideUp()、mouseleave().

②在原有下拉菜单的基础上添加第二级子菜单,第二级子菜单横向显示。与①类似:获取到顶层菜单后模拟顶层菜单的鼠标悬停与离开事件,并设置下层菜单的可见状态,多级下拉菜单实现步骤:

(1)将所有子菜单隐藏。

(2)设定主菜单项及各级子菜单项的模仿悬停事件。

(3)在模仿悬停事件中设定鼠标悬停则显示下级菜单,如果鼠标离开则收回菜单。

应用到的jquery函数有:ready()、css()、hover()、find()、show()、jquery属性first.

美观的css样式如ul、ul li、ul li a省略,只记录下主体部分。

(一)无序列表作为菜单主体

<ul id="mainmanu">

<li><a href="#">1 HTML</a></li>

<li><a href="#">2 CSS</a></li>

<li><a href="#">3 Javascript</a></li>

<ul>

<li><a href="#">3.1 jquery</a>

<ul>

<li><a href="#">3.1.1 Download</a></li>

<li><a href="#">3.1.2 Tutorial</a></li>

</ul>

</li>

<li><a href="#">3.2 Mootools</a></li>

<li><a href="#">3.3 Prototype</a></li>

</ul>

</li>

</ul>

(二)引入jquery库(最新版jquery库是3.4.1版本的,但我为了兼容低版本ie所以用了2版本以下的,可自行去jquery官网下载)

<script src="js/jquery-3.4.1.min.js" type="text/javascript“></script>

(三)添加js代码

<script type="text/javascript">

$(document).ready(function(){

$(" # mainmanu ul ").css({display: "none"});

$(" # mainmanu li").hover(function(){

$(this).find('ul:first').css({visibility: "visible"})

.show(400);

},function(){

$(this).find('ul:first').css({visibility: "hidden"});

});

});

</script>

(四)考虑了性能,所以我加了一个ready的预加载js代码。

2.后来由于界面需求,所以要把导航条随屏幕滚动始终固定在页面最上方。

本来考虑用js,后来想了想css也能做到,而且不用加载脚本。

(一)html

<div id="daohang">导航所在的div容器内容</div>

(二)css

#daohang{

position:fixed;

top:0;

left:0;

width:100%;

height:25px;

z-index:99;

}

3.分屏实现。本来也是考虑用js,后来复习了下html5,发现可以用锚点实现,于是采用这种方法。

①如定义了<div id="firstContent”></div>,要点击一个图片跳转到下一屏怎么办?对了点击的必须是图片即image,后缀是png,jpg等的。我试过用svg绘图,.svg的跳转功能在其它浏览器不起作用,只在ie浏览器才起作用,所以全部做完以后换成了.png的图片。

记录一下做的无用功svg图,在html中<embed src="svg/arrow.svg" type="image/svg+xml">

arrow.svg内容如下:

<?xml version="1.0" encoding="utf-8" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "

http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd

">

<svg width="40" height="40" version="1.1" fill="none" stroke="#CCCCCC" stroke-width="3">

<path d="M0 1L19 21L39 0" fill="none" fill-opacity="0" stroke="#999999" stroke-width="3" />

<path d="M5 25L18 38L32 25" fill="none" fill-opacity="0" stroke="#CCCCCC" stroke-width="3" />

</svg>

即这个图片

②在图片前加上链接即可<a href="#secondContent"><img src="./images/008.png"></a>

注意链接一定得加#,则可以跳转到第二屏。

4.文字竖排显示分别采用了两种方法实现。

①因为文字较少,14字短诗,所以直接用了css的line-height属性,直接设置它为24px;再把font-size属性设为1.5em;

em和px可以相互转换,1em=16px;

②解决大段文字竖排, 采用了css3的writing-mode属性,考虑兼容性所以还要写个加-webkit-前缀的writing-mode属性。如:

.intro{-webkit-writing-mode:vertical-rl;writing-mode:tb-rl;}这里采用float浮动+margin百分比定位。

同理,行高line-height也要设置,这里采用margin-left定位。

段落宽高自行添加吧。

5.橙色书签。

①过渡动画采用了css3的transition:height 4s;考虑兼容性加-webkit-前缀。

②css3的圆角border-radius属性。

③高度最终鼠标悬停变化设置div:hover{height:130px;};

6.文章标题背景框放置,如图

踩的坑是我把它定位写成了margin:20% 15%;postion:absolute;

最后看整体时整个页面最底部留白溢出了,因为父元素宽度我设成了100%,那么子元素margin就会留白溢出。

margin存在溢出问题!!!查了下资料,试过的方法都不起作用,比如:before伪类,

#header:before{

content:".";

display:block;

height:0;

visibility:hidden;

}//按理说这个css应该有作用的,就是在header开头插入一个字符,设置为块级元素并且高度为0和让其不见,就可以让header自动撑高了,但不知道为什么在我这里不起作用。

添加padding-top或在头部加一个 的空格等~

最后误打误撞重新设置了margin值,解决了o(* ̄︶ ̄*)o

重新设置margin值,设4个即可,即margin:20% 0 0 15%;

7.图片设置。

①定位还是用margin

②大小设置background-size:100% 100%;即可,自动填满设置的宽高,图片可以不用重新制作分辨率,自适应大小了。

(我觉得首页最难的是分屏的实现,当时给了效果图,我直接说不会,试了很多种js编写,总有各种问题出现,最后还是在看完了书才想到可以这样做。)

二.origin页面

1.轮播图

我之前用原生js写了一个,这次用的是基于jquery写的,觉得jquery的属性选择器$真的是好用,只用敲一点点代码就OK了,34行代码不贴。

2.蜂巢结构图文放置

用css3写的,一些效果,比如transition,opacity,hyphens,text-transform,z-index;css3的一些选择器,如::before,:after,:nth-child(n),>,考虑兼容性用到了-moz-前缀,-webkit-前缀,还有一个bug没解决,在ie浏览器上蜂巢效果显示的是正方形,不过没关系,其余效果一样,css3蜂巢路径绘制clip-path。为了响应式屏幕,所以用了display:flex流式布局蜂巢,最后用了@media媒体查询了屏幕大小,压缩了代码,不贴。

(我觉得文化起源这个页面rgba(0,0,0,0)的颜色比color:#000000好用些,因为可以直接设置透明度呀)

三.craft页面

1.鼠标滑轮滚动

采用js写的,也是分屏缓慢滑动页面。js部分不贴,html部分设置右边三个小点点贴一下:

<div id="radiodiv" class="radiodiv">

<input type="radio" id="radio1" onmouseenter="showScreen(1);" name="radio" value="1" checked="checked" />

<br/><br/><input type="radio" id="radio2" onmouseenter="showScreen(2)" name="radio" value="2" />

<br/><br/><input type="radio" id="radio3" onmouseenter="showScreen(3)" name="radio" value="3" />

<br/><br/><div id="informationdiv"></div>

</div>

2. 文章标题

本来用css3写的棕色圆形边框类似这种①②③,感觉太突兀了,效果不好,于是直接采用文字的一二三。

棕色圆形边框css

.bianKuang{

border-radius:25px;

border:2.5px solid #dba072;

height:30px;

width:30px;

float:left;

margin:0.5% 0;

text-align:center;

}

四.health页面

1.做完这个页面后我考虑了下页脚位置,后来发现不用考虑,效果还是一样的,所以直接把这一段css删了。

2.可能设置的图片宽度太宽,所以浏览器出现了水平滚动条,于是我在css里加了overflow-x:hidden;隐藏了水平滚动条。

这里的父背景定位position:relative,填充背景图一样用的如上的百分比大小;子文章定位我直接用了top:百分比值,left:百分比值,position:absolute;没有用margin.

五.teaism页面

1.动态半圆形菜单

①css部分绘制半圆,也是:nth-child(n)选择器。②js不贴

2.下面的文章部分响应式,用了@media.文章点击进去的详情页面,我懒,所以内容部分就直接摆放的图片。

3.由半圆形菜单点进去的书籍页面,也可以导航条点茶道茶德的茶道之书,最难做。

①3个css,分别控制右侧滑动条,翻页样式,整体样式。用了!important覆盖css样式,ie6有css hack,因此又加了一条css代码如下:

* html .jspCorner {

margin: 0 -3px 0 0;

}

css3的选择器>,transform,backface,transition,cursor,font-smoothing,渐变色linear-gradient,层叠优先样式z-index;box-shadow;text-shadow用的居多,前缀要加-webkit-,-moz-,-o-,-ms-。也用了@media媒体查询了屏幕大小。

②jquery采用的版本是1.9.1,基于它写了6个js,分别是css样式,右侧鼠标滑动,菜单点击滑动,图标隐藏显示相关菜单找到相应文章,手机端手势翻页,存储当前页内容,总体实现了所有功能。有个小bug未解决,如果翻页那0.1s盯着看,会看到快要翻过去的那一面是反的字,只有中文会出现这个bug,英文没有。别和我说加什么书本翻页柔和动画,我不会,有大佬会数学函数的可以教我吗,那是又要编写1至2个js了。

六.留言页面

实现了留言的添加,删除,展示部分。

相应本地时间可以显示,头像可以替换,名字与内容可以验证。

1.写了一个js实现以上所有功能。大致思路:

①获取id, class, tagName。

②事件绑定, 删除。

③设置css样式 ,读取css样式。

④禁止表单提交,按钮绑定发送事件,Ctrl+Enter快捷键绑定发送事件,发送事件。

⑤重置表单,判断字符输入事件绑定,输入字符限制,输入框获取焦点样式,鼠标滑过按钮样式,将表单展示的元素高度保存。

⑦删除功能,格式化时间,头像。

2.css部分用了zoom,overflow,word-wrap,repeat-x,cursor

透明度opacity:0.5; filter:alpha(opacity=50);

上一篇 下一篇

猜你喜欢

热点阅读