js控制下的飘窗

今天有学员反映说昨天去面试,有个考官问他会写飘窗吗?在反复的斟酌之后,她回答了不会。然后考官问她,有没有什么思路?她竟然说老师没教过!!!

到底还是小女生,其实考官的目的很明显,他的目的是想知道你的思考能力和解决问题的思路,毕竟不可能面试到的所有问题你都是接触过或研究过的。

最后重点说下,这个飘窗,小寻哥是真的教过,只不过当时觉得太简单,所以一笔带过,想不到啊,想不到啊。。。

早上一生气,特意带全班同学重新写了一遍,顺便贴上这处代码,其实很简单,重点的是思路,思路啊!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <title>飘窗</title>
        <meta name="Generator" content="飘窗">
        <meta name="Author" content="寻方客">
        <meta name="Keywords" content="飘窗">
        <meta name="Description" content="飘窗 企业级培训 js基础知识">
        <meta http-equiv="content-Type" content="text/html;charset=utf-8">

        <script type="text/javascript" src="./jquery-1.7.2.min.js"></script>
        <style type="text/css">
            .float_div {
                position: absolute;
            }
            .float_img {
                width: 200px;
                height: 200px;
            }
        </style>
    </head>

    <body>
        <div class="float_div" >
            <a href="http://www.cnblogs.com/hyzhao/" target="_blank"><img class="float_img" src="./piaochuang.jpg"></a>
        </div>
        <script type="text/javascript">
            var intervalX = 1, intervalY = 1;
            var posX = 0, posY = 0;
            var interval = 30;

            var divArr = document.getElementsByTagName("div");
            var floatDivObj = null;

            //这里是为了演示js的for/in才这样使用,实际中应该对飘窗设置id,节省资源
            for(var i in divArr){
                if(divArr[i].getAttribute("class") == "float_div"){
                    floatDivObj = divArr[i];
                    break;
                }
            }

            window.setInterval("float()", 50);
            function float() {
                posX += (interval * intervalX);
                posY += (interval * intervalY);

                //演示js和jquery下获取class对象的方式
                $(".float_div").css("top", posY);
                $(".float_div").css("left", posX);
                if (posX < 1 || posX +  floatDivObj.offsetWidth > $(window).width()) {
                    intervalX = -intervalX;
                }
                if (posY < 1 || posY + floatDivObj.offsetHeight + 5 > $(window).height()) {
                    intervalY = -intervalY;
                }
            }
        </script>
    </body>
</html>

这里写的比较粗糙,实际上还可以更精简,但是思路是没什么大的差别,小寻哥这里啰嗦下:看代码不要只看代码,更要去理解,去揣摩其中的思考方式!

备注:

  1.jquery-1.7.2.min.js大家可以自行从网上下载

  2.图片放上自己喜欢的即可

时间: 2024-11-06 07:48:19

js控制下的飘窗的相关文章

JS控制下的双层Tab切换

如题,JS控制下的双层Tab切换,其实只要想通了原理,实现起来很简单! 首先,附上CSS <style type="text/css"> img{border:none;padding:0px; margin:0 auto;} ul,li{list-style-type:none; margin:0px; padding:0px;} body {font-family:ì,Dì,oúì,Arial,Helvetica,sans-serif;font-size:12px;co

用JS控制下拉菜单效果

今天,突然想复习下之前学习做导航菜单的一些知识.之后觉得下拉菜单非常好玩儿,于是自己试着用JS调出了效果.网上有众多方法,但是感觉不是很对我的胃口,我喜欢HTML/CSS/JavaScript分离着写,用户体验重要,码农审美也很重要啊,O(∩_∩)O~ 在做下拉菜单的过程中,有以下心得: 1.this是个好东西,比如在鼠标事件中,它代表此时的鼠标事件对象本身,免去去用其他方式代表改对象的麻烦: 2.getElementsByTagName或者getElementById方法获得的是一个数组,需要

js控制网页滚动条往下滚动

function aa(i){ var tm = setInterval(function(){ var t = $(window).scrollTop(); var d = i < t ? Math.min((i-t)/10, -1) : Math.max((i-t)/10, 1) $(window).scrollTop( t + d ); if($(window).scrollTop()==i)clearInterval(tm); },30) } js控制网页滚动条往下滚动

用JS和C#分别在前端和后端控制下拉框为只读的方法的代码

代码期间,将写代码过程较好的代码段备份一次,下面资料是关于用JS和C#分别在前端和后端控制下拉框为只读的方法的代码,应该对各位朋友有较大用途. <HTML> <HEAD> <TITLE>下拉框模拟只读</TITLE> <script type="text/javascript"> function setReadOnly(obj_id){ var obj = document.getElementById(obj_id); o

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件

vue10行代码实现上拉翻页加载更多数据,纯手写js实现下拉刷新上拉翻页不引用任何第三方插件/库 一提到移动端的下拉刷新上拉翻页,你可能就会想到iScroll插件,没错iScroll是一个高性能,资源占用少,无依赖,多平台的javascript滚动插件.iScroll不仅仅是 滚动.它可以处理任何需要与用户进行移动交互的元素.在你的项目中包含仅仅4kb大小的iScroll,你的项目便拥有了滚动,缩放,平移,无限滚动,视差滚动,旋转功能.iScroll的强大毋庸置疑,本人也非常欢迎大家使用iScr

js控制radio选中

经常会遇到js控制radio选中和切换的问题 之前一直使用的是checked属性来完成的 但是现在发现这个属性有个大问题 今天就是用js给选中radio的赋值,使用的$().attr("checked",true); 当切换的时候,把name相同的radio的attr("checked",false),再把要选中的radio.attr("checked",true): 但是问题来了,每个radio只能被赋值一次,当第二次给他赋值的时候,赋不上值

JS常用正则表达式和JS控制输入框输入限制(数字、汉字、字符)

验证数字:^[0-9]*$验证n位的数字:^\d{n}$验证至少n位数字:^\d{n,}$验证m-n位的数字:^\d{m,n}$验证零和非零开头的数字:^(0|[1-9][0-9]*)$验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$验证非零的正整数:^\+?[1-9][0-9]*$验证非零的负整数:^\-[1-9][0-9]*$验证非负整数(正整数 + 0) ^\d+$验证非正整数(负整数 + 0) ^((

js 控制 &lt;head&gt;&lt;/head&gt;中 &lt;title&gt;内容 (IE8)

关于js 控制 <head></head>中 <title>内容显示 这几天一直在调试IE8兼容性问题 开发使用浏览器为FireFox,个人觉得FireFox下很多CSS,JS规范不够严谨,在使用其他浏览器时效果不同(虽然开发时使用FireFox很酷很便捷) 之前一直这样写: $("title").text(index_name); 使用IE8如下报错: 意外地调用了方法或属性访问 正确规范写法如下: document.title = index_n

Jsp页面跳转和js控制页面跳转的几种方法

Jsp 页面跳转的几种方法 1. RequestDispatcher.forward() 在服务器端起作用,当使用forward()时,Servlet engine传递HTTP请求从当前的Servlet或者是JSP到另外的一个Servlet.JSP 或普通HTML文件,也即你的form提交至a.jsp,在a.jsp用到了forward()重定向至b.jsp,此时form提交的所有信息在 b.jsp都可以获得,参数自动传递. 但forward()无法重定向至有frame的jsp文件,可以重定向至有