1、最近在用h5的canvas画动画,发现图像特别模糊。后来终于找到罪魁祸首是
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
这个代码,因为这行代码进行了伸缩
2、模糊图像的效果:
3、将压缩去掉后的效果
可以将代码改成
<!doctype html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="user-scalable=no" /> <title>赛事详细页</title> <script src="js/rem.js" type="text/javascript" charset="utf-8"></script> <link rel="stylesheet" type="text/css" href="css/m_reset.css" /> <link rel="stylesheet" type="text/css" href="css/gamelistsnew.css" /> <link href="css/mask.css" rel="stylesheet" /> </head> <body> <p class="tipmask"> <p class="tipbox"> <img src="img/failetip.png" class="tipsimg" /> <p class="filebtn"> <img src="img/filebtn.png" /> <span class="tryagain">再试一次</span> </p> </p> </p> <p> <img src="img/whiteback.png" class="titleimg" /> <p class="bgevent" id="contentbody"> <p id="eventdetail" v-cloak> <!--标题--> <p class="detailevent"> <p class="titlevs"> <img class="teamflaglogo" onerror="nofind(this);" :src="'img/teamlogonew/'+eventdetail.hometeamid+'.png'" /> <p class="countryname"> {{eventdetail.hometeamname}} </p> </p> <p class="titlevs" style="padding-top:0.3rem ;"> <p> <!--未开赛--> <!--<p class="theworldcup">世界杯</p>--> <p class="thegamenowdatatime">{{eventdetail.timeformat }}</p> <p class="gamebegintime">{{getscoreorvs(eventdetail.hometeamscore,eventdetail.awayteamscore)}}</p> </p> <!--开赛时长--> <!--<p> <p>73:40</p> </p>--> </p> <p class="titlevs"> <img class="teamflaglogo" onerror="nofind(this);" :src="'img/teamlogonew/'+eventdetail.awayteamid+'.png'" /> <p class="countryname"> {{eventdetail.awayteamname}} </p> </p> </p> <p id="ordersuccess" class="ordersuccess"> <p style="text-align:right;padding-top:0.2rem;padding-left:0.2rem;"> <img src="img/ordersuccess/close.png" style="width:0.45rem;height:0.45rem;" id="closesuccess" onclick="closesuccess();" /> </p> <p class="teamname"> <p class="teamnameitem"><p class="teamnameitemtop">{{eventdetail.hometeamname}}</p><br /><p class="teamnameitembottom">home</p></p> <p class="teamnameitem "><p class="teamnameitemmiddle">vs</p></p> <p class="teamnameitem"><p class="teamnameitemtop">{{eventdetail.awayteamname}}</p><br /><p class="teamnameitembottom">away</p></p> </p> <p class="teamdetail"> <p class="teamdate"><span>{{eventdetail.competitionname}}</span><span>/</span><span>{{eventdetail.dateformat}}</span></p> <p class="teamplaysselection"> <table style="width:100%;text-align:left;height:100%;"> <tr> <td class="teamplaysselectiontop" style="width:50%;">玩法</td> <td class="teamplaysselectiontop" style="width:50%;">选项</td> </tr> <tr> <td class="teamplaysselectionbottom" style="width:50%;" id="rulename">match odds</td> <td class="teamplaysselectionbottom" style="width:50%;" id="selectionname">home</td> </tr> </table> </p> <p class="teamwinmoney"> <table style="width:90%;text-align:left;height:100%;"> <tr> <td class="teamwinmoneytop" style="width:50%;"> 本金 </td> <td class="teamwinmoneytop" style="width:50%;"> 赔率 </td> <td class="teamwinmoneytop" style="width:50%;"> 预赢 </td> </tr> <tr> <td class="teamwinmoneybottom" style="width:50%;" id="betmoneysuc">1000</td> <td class="teamwinmoneybottom" style="width:50%;" id="betodds">12.54</td> <td class="teamwinmoneybottom" style="width:50%;" id="betwin">12540</td> </tr> </table> </p> </p> </p> </p> <p> <p class="square" id="square"> <canvas id="courtcasenew" width="980" height="765"></canvas> </p> <img src="img/balllittle.png" style="width:20px;height:20px;display:none;" id="imgballnew" /> </p> <p class="middlechat"> <p class="middleitem" id="jcc"> <p class="tabactive">竞猜场</p> </p> <p class="middleitem" id="jcjl"> <p class="tabcommon">竞猜记录</p> </p> <p class="middleitem" id="sssj"> <p class="tabcommon">赛事事件</p> </p> <p class="middleitem" id="jstj"> <p class="tabcommon">技术统计</p> </p> </p> <p class="downchangrtab quizgames" style="display: block;"> <p id="ruletypeitems" v-cloak> <!--胜平负--> <p class="diffplaystetx" v-for="(item,index) in eventdetail.market" v-if="item.ruletype==100"> <span class="speciesname">赛果</span> <span class="rotary" v-if="item.state!=1">(已封盘)</span> <span class="speciesexp">猜90分钟(含补时)两队的比赛结果</span> </p> <p v-for="(item,index) in eventdetail.market" v-if="item.ruletype==100" id="result" name="selectionitems" class="result"> <p v-bind:class="[(select.backodds<1.01 || item.state!=1) ? 'resutitemgray commonbordergray':'resutitem commonborder']" v-for="(select,index) in item.selection" v-on:click="select.backodds>=1.01 &&clickfun($event,item.state,select.backodds,item.marketid,select.selectionid,'赛果',select.selectionname);" name="itemselection"> <p class="winequlose" v-bind:name="'item'+item.marketid">{{select.selectionname}}</p> <p class="winequloseodds " v-bind:name="'item'+item.marketid"> <span v-bind:id="item.marketid+select.selectionid" v-bind:maxlimit="select.maxstakelimit">{{select.backodds}}</span> <img src="img/uping.png" style="width:0.2rem;display:none;" v-bind:id="'redone'+item.marketid+select.selectionid" /> <img src="img/downing.png" style="width:0.2rem;display:none;" v-bind:id="'greenone'+item.marketid+select.selectionid" /> </p> </p> </p> <!--单双--> <p class="diffplaystetx" v-for="(item,index) in eventdetail.market" v-if="item.ruletype==130"> <span class="speciesname">单双</span> <span class="rotary" v-if="item.state!=1">(已封盘)</span> <span class="speciesexp">猜90分钟(含补时)比赛总进球的单双</span> </p> <p id="oddeven" v-for="(item,index) in eventdetail.market" v-if="item.ruletype==130" name="selectionitems" class="oddeven"> <p v-bind:class="[(select.backodds<1.01 || item.state!=1) ? 'oddevenitemgray commonbordergray':'oddevenitem commonborder']" v-for="(select,index) in item.selection" v-on:click="select.backodds>=1.01 &&clickfun($event,item.state,select.backodds,item.marketid,select.selectionid,'单双',select.selectionname)" name="itemselection"> <p class="winequlose" v-bind:name="'item'+item.marketid" v-bind:id="'selectionname'+item.marketid+select.selectionid">{{select.selectionname}}</p> <p class="winequloseodds" v-bind:name="'item'+item.marketid"> <span v-bind:id="item.marketid+select.selectionid" v-bind:maxlimit="select.maxstakelimit">{{select.backodds}}</span> <img src="img/uping.png" style="width:0.2rem;display:none;" v-bind:id="'redone'+item.marketid+select.selectionid" /> <img src="img/downing.png" style="width:0.2rem;display:none;" v-bind:id="'greenone'+item.marketid+select.selectionid" /> </p> </p> </p> <!--总进球--> <p class="diffplaystetx" v-for="(item,index) in eventdetail.market" v-if="item.ruletype==410"> <span class="speciesname">总进球 </span> <span class="rotary" v-if="item.state!=1">(已封盘)</span> <span class="speciesexp">猜90分钟(含补时)比赛总进球的数 </span> </p> <p id="totalgoals" v-for="(item,index) in eventdetail.market" v-if="item.ruletype==410" name="selectionitems" class="totalgoals"> <p v-bind:class="[(select.backodds<1.01 || item.state!=1) ? 'totalgoalitemgray commonbordergray':'totalgoalitem commonborder']" v-for="(select,index) in item.selection" v-on:click="select.backodds>=1.01 &&clickfun($event,item.state,select.backodds,item.marketid,select.selectionid,'总进球',select.selectionname)" name="itemselection"> <p class="winequlose" v-bind:name="'item'+item.marketid" v-bind:id="'selectionname'+item.marketid+select.selectionid">{{select.selectionname}}</p> <p class="winequloseodds" v-bind:name="'item'+item.marketid"> <span v-bind:id="item.marketid+select.selectionid" v-bind:maxlimit="select.maxstakelimit">{{select.backodds}}</span> <img src="img/uping.png" style="width:0.2rem;display:none;" v-bind:id="'redone'+item.marketid+select.selectionid" /> <img src="img/downing.png" style="width:0.2rem;display:none;" v-bind:id="'greenone'+item.marketid+select.selectionid" /> </p> </p> </p> <!--全场比分--> <p class="diffplaystetx" v-for="(item,index) in eventdetail.market" v-if="item.ruletype==140"> <span class="speciesname">全场比分</span> <span class="rotary" v-if="item.state!=1">(已封盘)</span> <span class="speciesexp">猜90分钟(含补时)全场比分</span> </p> <p id="correctscorehome" v-for="(item,index) in eventdetail.market" v-if="item.ruletype==140" name="selectionitems" class="correctscorehomeaway"> <p v-bind:class="[(select.backodds<1.01 || item.state!=1) ? 'correctscoreitemgray commonbordergray':'correctscoreitem commonborder']" v-for="(select,index) in item.selection" v-on:click="select.backodds>=1.01 &&clickfun($event,item.state,select.backodds,item.marketid,select.selectionid,'全场比分',select.selectionname)" name="itemselection"> <p class="winequlose" v-bind:name="'item'+item.marketid" v-bind:id="'selectionname'+item.marketid+select.selectionid">{{select.selectionname}}</p> <p class="winequloseodds" v-bind:name="'item'+item.marketid"> <span v-bind:id="item.marketid+select.selectionid" v-bind:maxlimit="select.maxstakelimit">{{select.backodds}}</span> <img src="img/uping.png" style="width:0.2rem;display:none;" v-bind:id="'redone'+item.marketid+select.selectionid" /> <img src="img/downing.png" style="width:0.2rem;display:none;" v-bind:id="'greenone'+item.marketid+select.selectionid" /> </p> </p> </p> <p class="downimg" onclick="clickimg()"> <img src="img/todown.png" /> </p> <!--下一进球--> <p class="diffplaystetx" v-for="(item,index) in eventdetail.market" v-if="item.ruletype==350"> <span class="speciesname">下一进球</span> <span class="rotary" v-if="item.state!=1">(已封盘)</span> <span class="speciesexp">猜90分钟(含补时)下一进球的球队</span> </p> <p id="nextgoal" v-for="(item,index) in eventdetail.market" v-if="item.ruletype==350" name="selectionitems" class="result"> <p v-bind:class="[(select.backodds<1.01 || item.state!=1) ? 'resutitemgray commonbordergray':'resutitem commonborder']" v-for="(select,index) in item.selection" v-on:click="select.backodds>=1.01 &&clickfun($event,item.state,select.backodds,item.marketid,select.selectionid,'下一进球',select.selectionname)" name="itemselection"> <p class="winequlose" v-bind:name="'item'+item.marketid" v-bind:id="'selectionname'+item.marketid+select.selectionid">{{select.selectionname}}</p> <p class="winequloseodds" v-bind:name="'item'+item.marketid"> <span v-bind:id="item.marketid+select.selectionid" v-bind:maxlimit="select.maxstakelimit">{{select.backodds}}</span> <img src="img/uping.png" style="width:0.2rem;display:none;" v-bind:id="'redone'+item.marketid+select.selectionid" /> <img src="img/downing.png" style="width:0.2rem;display:none;" v-bind:id="'greenone'+item.marketid+select.selectionid" /> </p> </p> <p class="" style="width: 100%;height:0.45rem;"></p> </p> <p class="perchp" style="width: 100%;height:3rem;"></p> </p> </p> <!--竞猜记录--> <p class="downchangrtab guessrecord"> <p class="hide-body" id="dialogorders"> <p class="tablenameguess"> <li>玩法</li> <li>选项</li> <li>赔率</li> <li>本金</li> <li>结果</li> </p> <ul style="background:#ffffff;height:4.79rem;overflow: scroll;"> <p class="guessedlists" id="contentorders" v-for="(item,index) in orders"> <li> {{item.marketname}} </li> <li> {{item.selectionname}} </li> <li> {{item.fillprice}} </li> <li> {{item.fillamount}} </li> <li> <p v-if="item.status == '0'"> 待确认</p> <p v-else-if="item.status == '1'">订单正常</p> <p v-else-if="item.status == '2'">{{item.netreturn}}</p> <p v-else-if="item.status == '3'">订单已被取消</p> <p v-else-if="item.status == '4'">订单无效</p> <p v-else="item.status == '5'">订单被拒绝,投注延迟期间发生重要事件等原因</p> </li> </p> </ul> </p> </p> <!--赛事事件--> <p class="downchangrtab" style="display: none;" v-if=""> <p class="login-body" id="contentcases"> <table class="whathappen" v-if="cases.length >0"> <tr> <td></td> <td class="happenedmiddle"> <p class="happenedmiddle_top" style="margin-top: 0.4rem;"></p> </td> <td></td> </tr> </table> <table class="whathappen" style="" v-for="(item,index) in cases" border="0" cellspacing="0" cellpadding="0"> <tr> <td></td> <td class="happenedmiddle"> <p class="happenedmiddle_line"></p> </td> <td></td> </tr> <tr v-if="item.casedescription.indexof('主')>-1"> <td class="eventshappendleft_things"> <p class="eventstext"> <p class="eventstextleft_time">{{item.caseminutes}}'</p> <p class="eventstextleft_country">{{item.casedescription}}</p> </p> </td> <td class="happenedmiddle"> <p class="eventshappend_img"> <img :src="getmatcheventimg(item.casedescription)" /> </p> </td> <td></td> </tr> <tr v-if="item.casedescription.indexof('客')>-1"> <td></td> <td class="happenedmiddle"> <p class="eventshappend_img"> <img :src="getmatcheventimg(item.casedescription)" /> </p> </td> <td class="eventshappendright_things"> <p class="eventstext"> <p class="eventstextright_country">{{item.casedescription}}</p> <p class="eventstextright_time">{{item.caseminutes}}'</p> </p> </td> </tr> <tr v-if="item.casedescription.indexof('主')<0 && item.casedescription.indexof('主')<0"> <td></td> <td> <a class="ti tlefoc">{{item.caseminutes}}'</a> <a class="titlefoc">{{item.deschina}}</a> </td> <td></td> </tr> </table> <table class="whathappen" v-if="cases.length >0"> <tr> <td></td> <td class="happenedmiddle"> <p class="happenedmiddle_line"></p> <p class="happenedmiddle_top"></p> </td> <td></td> </tr> </table> <!--<p style="width: 100%; height: 2.7rem;"></p>--> </p> </p> <!--技术统计--> <p class="downchangrtab" style="display: none;"> <p class="skillinfogarybg" id="stutsskillsdata"> <p class="skillinfo" v-for="(item, index) in skillsdata"> <li class="shotsontargets"> <p class="shotsontargets_left"> <p class="skillstextfonts">{{item.awayteamvalue}}</p> <p class="sotl_bg"> <p class="sotl_bgprogress"></p> </p> </p> <p class="shotsontargets_middle"> <img :src="getmatchstatsimage(item.statstype)" /> <p class="shills_name">{{item.statstype}}</p> </p> <p class="shotsontargets_right"> <p class="skillstextfonts">{{item.hometeamvalue}}</p> <p class="sotl_bg"> <p class="sotl_bgprogress"></p> </p> </p> </li> </p> </p> </p> </p> <!--底部下单--> <p class="buttomorder"> <!--金额输入--> <!--竞猜金额--> <p class="aboutmoney"> <input type="text" name="" id="betmoney" class="gussmoney" value="竞猜金额" placeholder="" readonly="readonly" v-model="gussmoney" /> <img src="img/clearbetmoney.png" class="cleargussmoney" id="cleargussmoney" /> <!--余额--> <span class="balancemoney" id="minemoney">我的余额:888</span> <!--下注金额--> <p class="diffgussmoney" style="text-align:center;"> <ul> <li name="bettingmoney" class="difgumoncom" val="100">+100</li> <li name="bettingmoney" class="difgumoncom" val="500">+500</li> <li name="bettingmoney" class="difgumoncom" val="1000">+1000</li> <li class="difgumoncom" id="allin" style="line-height: 0.5rem;"> <p style="height: 0.3rem;">all <span style="margin-left: 0.05rem;">in</span></p> <p id="allinvalue" style="height: 0.3rem;">100</p> </li> </ul> </p> <!--确定--> <p class="subsure subsurered" style="text-align:center;" onclick="createorder();" id="subsure"> 确定 </p> </p> </p> <!--下单成功后遮罩层--> <p id="overlay" class="overlay"></p> </p> <p> <img src="img/goal/goalball.png" /> <img src="img/goal/goal.png" /> <img src="img/goal/fireworks.png" /> </p> <script src="js/jquery-1.10.2.min.js" type="text/javascript" charset="utf-8"></script> <script src="js/vue.min.js" type="text/javascript" charset="utf-8"></script> <script src="js/common.js?ver=012902" type="text/javascript" charset="utf-8"></script> <script src="js/jquery.cookie.min.js"></script> <script src="js/mask.js?ver=012901"></script> <script type="text/javascript" src="js/eventdetailsnew.js?ver=012908"></script> <script src="../js/animation.js"></script> </body> </html>
相关推荐:
javascript实现图像模糊化的方法实例
javascript实现的图像模糊算法代码分享_javascript技巧
canvas绘制图片模糊该如何解决?
以上就是html5 canvas图像模糊如何解决的详细内容。
