前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >写一个问卷调查的功能(熟悉一下Array数组的操作以及对Radio的使用)

写一个问卷调查的功能(熟悉一下Array数组的操作以及对Radio的使用)

作者头像
何处锦绣不灰堆
发布2020-05-29 12:21:48
7530
发布2020-05-29 12:21:48
举报
文章被收录于专栏:农历七月廿一农历七月廿一

首先感谢这个大神的css和js,让我得以实现这个效果,我只是将基本的js实现了,大部分的工作都是这个朋友完成的,他将效果实现的很完美,我只是拿过来将功能完善了一下,原文的可选项很多,但是为了快速实现js的结果运算,我将很多的代码都删除了,最后将结果呈现出来,最后再次感谢这位朋友!

代码语言:javascript
复制
/**
 * CSS3 答题卡翻页效果 jQuery Transit 
 * @authors Candice <286556658@qq.com>
 * @date    2016-9-27 15:30:18
 * @version v1.0.8
 */

效果预览:

不 BB,我们看代码:

answer.js

JS:

代码语言:javascript
复制
$.fn.answerSheet = function(options) {
    var defaults = {
        mold: 'card',
    };
    var opts = $.extend({},
    defaults, options);
    return $(this).each(function() {
        var obj = $(this).find('.card_cont');
        var _length = obj.length,
        _b = _length - 1,
        _len = _length - 1,
        _cont = '.card_cont';
        for (var a = 1; a <= _length; a++) {
            obj.eq(_b).css({
                'z-index': a
            });
            _b -= 1;
        }
        $(this).show();
        if (opts.mold == 'card') {
            obj.find('ul li label').click(function() {
                var _idx = $(this).parents(_cont).index(),
                _cards = obj,
                _cardcont = $(this).parents(_cont);
                if (_idx == _len) {
                    return;
                } else {
                    setTimeout(function() {
                        _cardcont.addClass('cardn');
                        setTimeout(function() {
                            _cards.eq(_idx + 3).addClass('card3');
                            _cards.eq(_idx + 2).removeClass('card3').addClass('card2');
                            _cards.eq(_idx + 1).removeClass('card2').addClass('card1');
                            _cardcont.removeClass('card1');
                        },
                        200);
                    },
                    100);
                }
            });
            $('.card_bottom').find('.prev').click(function() {
                var _idx = $(this).parents(_cont).index(),
                _cardcont = $(this).parents(_cont);
                obj.eq(_idx + 2).removeClass('card3').removeClass('cardn');
                obj.eq(_idx + 1).removeClass('card2').removeClass('cardn').addClass('card3');
                obj.eq(_idx).removeClass('card1').removeClass('cardn').addClass('card2');
                setTimeout(function() {
                    obj.eq(_idx - 1).addClass('card1').removeClass('cardn');
                },
                200);
            })
        }
    });
};

H5:

代码语言:javascript
复制
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>问卷调查效果实现</title>
    <meta name="format-detection" content="telephone=no" />
    <meta name="apple-mobile-web-app-capable" content="yes" />
    <meta name="viewport" content="width=device-width,initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no" />
    <meta name="description" content="">
    <meta name="keywords" content="">
<link href="risk_test.css" rel="stylesheet" />
</head>

<body style="background-color:">

	<div class="wrapper">
    	<div id="answer" class="card_wrap">
        	<!--Q1-->
       	  	<div class="card_cont card1">
            	<div class="card">
                    <p class="question"><span>Q1、</span>您觉得最好用的后端框架是什么?</p>
                    <ul class="select">
                        <li>
                            <input id="q1_1" type="radio" name="r-group-1" value="A" οnclick="checkradio(this.value)">
                            <label for="q1_1">A:SpringBoot</label>
                        </li>
                        <li>
                            <input id="q1_2" type="radio" name="r-group-1" value="B" οnclick="checkradio(this.value)">
                            <label for="q1_2">B:SpringMVC</label>
                        </li>
                    </ul>
                    <div class="card_bottom"><span><b>1</b>/4</span></div>
                </div>
            </div>
            <!--Q2-->
          	<div class="card_cont card2" >
            	<div class="card">
                	<p class="question"><span>Q2、</span>您觉得前端最好用的框架是什么?</p>
					<ul class="select">
                        <li>
                            <input id="q2_1" type="radio" name="r-group-2" value="A" οnclick="checkradio(this.value)">
                            <label for="q2_1">A:VUE</label>
                        </li>
                        <li>
                            <input id="q2_2" type="radio" name="r-group-2" value="B" οnclick="checkradio(this.value)">
                            <label for="q2_2">B:REACT</label>
                        </li>
                    </ul>
                    <div class="card_bottom"><a class="prev"></a><span><b>2</b>/4</span></div>
                </div>
            </div>
            <!--Q3-->
          	<div class="card_cont card3">
            	<div class="card">
                	<p class="question"><span>Q3、</span>您比较喜欢前端还是后端?</p>
                	<ul class="select">
                        <li>
                            <input id="q3_1" type="radio" name="r-group-3" value="A" οnclick="checkradio(this.value)">
                            <label for="q3_1">A:前端</label>
                        </li>
                        <li>
                            <input id="q3_2" type="radio" name="r-group-3" value="B" οnclick="checkradio(this.value)">
                            <label for="q3_2">B:后端</label>
                        </li>
                    </ul>
                    <div class="card_bottom"><span><b>3</b>/4</span></div>
                </div>
            </div>
						<!--Q4-->
						<div class="card_cont">
							<div class="card">
									<p class="question"><span>Q4、</span>这是您的结果</p>
									<ul class="select">
										<li>
												<label for="" style="font-size: large;" id="relult"></label>
										</li>
										</ul>
										<div class="card_bottom"><a οnclick="relult()" id="a1">结束评测</a><span><b>4</b>/4</span></div>
								</div>
						</div>
	</div>
        
    <script src="jquery-1.8.3.min.js"></script>
    <script src="answer.js"></script>
    <script>
	$(function(){
		$("#answer").answerSheet({});
	})
	/* 这里是将评测的用户的数据总结到一个数组里面 */
	var ary = new Array();
	function checkradio(val){
			  ary.push(val);
	}
	/* 这里是将结果分析出来给结果 */
	function relult(){
		if(ary[0] == "A" && ary[1] == "A" && ary[2] == "A"){
		   $("#relult").append("您的结果是:您比较喜欢前端比较喜欢用VUE,比较喜欢用SpringBoot")
			 document.getElementById("a1").style.display = "none";
		}else if(ary[0] == "A" && ary[1] == "A" && ary[2] == "B"){
			$("#relult").append("这是结果")
			document.getElementById("a1").style.display = "none";
		}else if(ary[0] == "A" && ary[1] == "B" && ary[2] == "A"){
			$("#relult").append("这是结果")
			document.getElementById("a1").style.display = "none";
		}else if(ary[0] == "B" && ary[1] == "B" && ary[2] == "A"){
			$("#relult").append("这是结果")
			document.getElementById("a1").style.display = "none";
		}else if(ary[0] == "B" && ary[1] == "A" && ary[2] == "B"){
			$("#relult").append("这是结果")
			document.getElementById("a1").style.display = "none";
		}else if(ary[0] == "B" && ary[1] == "B" && ary[2] == "B"){
			$("#relult").append("这是结果")
			document.getElementById("a1").style.display = "none";
		}else if(ary[0] == "A" && ary[1] == "B" && ary[2] == "B"){
			$("#relult").append("这是结果")
			document.getElementById("a1").style.display = "none";
		}else if(ary[0] == "B" && ary[1] == "B" && ary[2] == "A"){
			$("#relult").append("这是结果")
			document.getElementById("a1").style.display = "none";
		}else{
			$("#relult").append("这是结果")
			document.getElementById("a1").style.display = "none";
		}
	}
    </script>
</body>

</html>
代码语言:javascript
复制
body{line-height:1;color:#333;width:100%;margin:0 auto;-webkit-text-size-adjust:none;overflow-x:hidden}p,ol,ul,li{list-style:none}a,span{line-height:1;color:#333;text-decoration:none}button{outline:0}label{font-weight:normal}img{width:100%;display:block}a img{word-break:break-all;word-wrap:break-word}a:hover,a:focus{text-decoration:none}:focus{outline:0}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-text-size-adjust:none}
html,body{padding:0; margin:0 auto; height:100%; font-size:15px; max-width:400px}
*{-webkit-appearance:none; margin:0; padding:0}
a, span{color:inherit ; line-height:inherit; text-decoration:none}
img{width:auto }
input{outline:none;}

/**
 * CSS3 答题卡翻页效果 jQuery Transit 
 * @authors Candice <286556658@qq.com>
 * @date    2016-9-27 15:30:18
 * @version v1.0.8
 */
.wrapper{width:100%; margin:0 auto;}
.card_wrap{width:400px; height:584px; position:relative; overflow:hidden; display:none}
.card_cont{width:100%; height:530px; box-sizing:border-box; margin:0 auto; position:absolute;  background:url(test_card_bg.png) no-repeat center top; background-size:100% auto; padding:8px 20px 18px; transition:all ease .5s; -webkit-transition:all ease .5s; -moz-transition:all ease .5s; -ms-transition:all ease .5s; transform:scale(0,0); -moz-transform:scale(0,0);-ms-transform:scale(0,0); -o-transform:scale(0,0); -webkit-transform:scale(0,0); bottom:0; display:none;}
.card{width:320px; height:100%; position:relative; margin:0 auto; padding:0 18px; }
.card .card_bottom{width:100%; position:absolute; bottom:28px; left:0; box-sizing:border-box; padding:0 28px}
.card .card_bottom a{color:#c733c5; cursor:pointer }
.card .card_bottom span{float:right; color:#909090}.card .card_bottom span b{color:#666; font-weight:inherit}

.card_cont.card1{ display:block;transform:scale(1,1) translate(0,0) !important ;  
-ms-transform:scale(1,1) translate(0,0) !important ; 
-moz-transform:scale(1,1) translate(0,0) !important ; 
-webkit-transform:scale(1,1) translate(0,0) !important ; 
}
.card_cont.card2{ display:block;
transform:scale(.85,.85) translate(0,-62px) !important ; 
-ms-transform:scale(.85,.85) translate(0,-62px) !important ; 
-moz-transform:scale(.85,.85) translate(0,-62px) !important ; 
-webkit-transform:scale(.85,.85) translate(0,-62px) !important;
}
.card_cont.card3{ display:block;
transform:scale(.72,.72) translate(0,-135px) !important ; 
-ms-transform:scale(.72,.72) translate(0,-135px) !important ; 
-moz-transform:scale(.72,.72) translate(0,-135px) !important ;
-webkit-transform:scale(.72,.72) translate(0,-135px) !important ;
}
.card_cont.cardn{display:block;
transform:translate(0,-1000px) !important; 
-moz-transform:translate(0,-1000px) !important; 
-ms-transform:translate(0,-1000px) !important;
-webkit-transform:translate(0,-1000px) !important;}

.question{display:table-cell; height:80px; font-size:16px; font-weight:100; color:#fff; line-height:1.4; vertical-align:middle; padding-left:1em}
.question span{margin-left:-1em}

/*Radio Specific styles*/
input[type='radio']{ display: none;cursor: pointer;}
input[type='radio']:focus, input[type='radio']:active{outline: none;}
input[type='radio'] + label {
  cursor: pointer;
  display: inline-block;
  position: relative;
  padding-left: 28px;
  color: #666;

}
input[type='radio']:checked + label {color: #c733c5 !important;}
input[type='radio'] + label:before, input[type='radio'] + label:after{
  content: '';
  font-family: helvetica;
  display: inline-block;
  width: 20px;
  height:20px;
  left: 0;
  top: 0;
  text-align: center;
  position: absolute;
}
input[type='radio'] + label:before {background-color:transparent;}
input[type='radio'] + label:after {color: #c733c5;}
input[type='radio']:checked + label:before {
  -moz-box-shadow: inset 0 0 0 5px #fff;
  -webkit-box-shadow: inset 0 0 5px #fff;
  box-shadow: inset 0 0 0 5px #fff; 
  border:1px solid #c733c5;
  background-color:#c733c5;
}

input[type='radio'] + label:before {
  -moz-border-radius: 50%;
  -webkit-border-radius: 50%;
  border-radius: 50%;
  border:1px solid #c733c5;
}

input[type='radio'] + label:hover:after {color: #c733c5;}
input[type='radio']:checked + label:after, input[type='radio']:checked + label:hover:after {color: #c733c5;}
ul.select{margin-top:30px}
ul.select li{height:46px; line-height:1.5; margin:0 0 20px 0}

PNG:

ok,这里细心的基本都可以看到我的js是写的不完整的,毕竟很多,这样的排列的组合是很多的,所以感兴趣的可以直接自己补充,他的预算次数是2的3次方,那么如果有五个选项九个页面的话那就是5的9次方,所以我是没有那么多的精力实现的,感兴趣的可以自己慢慢的补充!也可以用在别的地方,例如:追女朋友!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-06-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯问卷
腾讯问卷是专业的在线问卷调查平台,支撑了腾讯核心业务的⽤户、市场、产品研究工作。平台提供基于数据收集的专业调查研究解决方案,覆盖问卷调查、信息上报、在线测评、在线考试、360度评估、投票打卡等工作场景,致力于为客户提供高效的洞察决策工具。同时平台还拥有超百万级的真实样本用户,可以提供高效、精准的问卷有偿投放服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档