Если условие не работает с ориентацией устройства - PullRequest
0 голосов
/ 25 августа 2018

Итак, ребята, я играю с ориентацией устройства.Вот оно https://sublime.glitch.me/ Все прошло хорошо, кроме условия if.Если вы посмотрите на веб-страницу на мобильном устройстве, вы увидите, что png перемещается в соответствии с ориентацией устройства.

Но я не хочу, чтобы он исчезал с экрана, это то, где мне нужно, если условие.Я пытался сделать evt.gamma не больше 35 или меньше -35 с условием if.

Но, видимо, то, что у меня есть, не работает.Извините за плохое знание кода, я дизайнер, а не разработчик, может кто-нибудь, пожалуйста, помогите мне?

(function(b,o,i,l,e,r){b.GoogleAnalyticsObject=l;b[l]||(b[l]=
    function(){(b[l].q=b[l].q||[]).push(arguments)});b[l].l=+new Date;
    e=o.createElement(i);r=o.getElementsByTagName(i)[0];
    e.src='//www.google-analytics.com/analytics.js';
    r.parentNode.insertBefore(e,r)}(window,document,'script','ga'));
    ga('create','UA-52746336-1');ga('send','pageview');
    var isCompleted = {};
    function sampleCompleted(sampleName){
    if (ga && !isCompleted.hasOwnProperty(sampleName)) {
      ga('send', 'event', 'WebCentralSample', sampleName, 'completed'); 
      isCompleted[sampleName] = true;
    }
      }



      var fixed = 2;
      var h5logo  = document.getElementById("h5logo");
      var timestamp = document.getElementById("timestamp");
      var alpha = document.getElementById("alpha");
      var beta = document.getElementById("beta");
      var gamma = document.getElementById("gamma");
      

      /* // [START devori] */
      if (window.DeviceOrientationEvent) {
        window.addEventListener('deviceorientation', deviceOrientationHandler, false);
        document.getElementById("doeSupported").innerText = "";
      }
      
      /* // [END devori] */

      var deviceOrientationData;

      function deviceOrientationHandler(evt) {
        deviceOrientationData = evt;
        
        try {
          timestamp.innerText = new Date(evt.timeStamp);
          alpha.innerText = evt.alpha.toFixed(fixed);
          beta.innerText = evt.beta.toFixed(fixed);
          gamma.innerText = evt.gamma.toFixed(fixed);
          
          
          if(evt.gamma<-35){evt.gamma=-35}
          if(evt.gamma>35){evt.gamma=35}
          
          var trans = " translate("+ ((evt.gamma+20) * 2)+"px, "+ ((evt.beta-90) * -3)+"px) " ;
          
          
          h5logo.style.webkitTransform = trans;
          h5logo.style.transform = trans;
         
          
        } catch (ex) {
          document.getElementById("doeSupported").innerText = "NOT";
        }
      }
.h5logo {
        width: 40vh;
        display: block;
        margin-left: auto;
        margin-right: auto;
        position:absolute;
        z=index:10;
         }
<!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="style.css">
   
    <script defer src="https://code.getmdl.io/1.2.1/material.min.js"> . 
    </script>
    <style>
      body {
        margin: 2em;
      }
    </style>
    <title>?</title>

    </head>
    <body>
    
    
    <div role="main" class="container">
      
      <img src="https://cdn.glitch.com/8da575e7-c6aa-48cb-bb49-3a708f8c28fc%2Fpreview.png?1535142774062"  style="display: block; position: absolute; margin-left:auto; margin-right:auto; z-index:-2">
      <img id="h5logo" src="https://cdn.glitch.com/8da575e7-c6aa-48cb-bb49-3a708f8c28fc%2Fhand.png?1535129311138" class="h5logo">
      <h1 style="position:absolute; z-index:-1; transform: rotate(90deg) translate(20%,-60%);">
      sublime
      </h1>
      <p>
        <b>alpha:</b> <span id="alpha"></span><br>
        <b>beta:</b> <span id="beta"></span><br>
        <b>gamma:</b> <span id="gamma"></span><br>
      </p>

      <p>
         <span id="timestamp" ></span>
      </p>

      </div>
     
    </body>
    </html>

Здесь не работают строки, перевод работает нормально, просто условие if.Большое спасибо, ребята.

if(evt.gamma<-35){evt.gamma=-35}
if(evt.gamma>35){evt.gamma=35}
var trans = " translate("+ ((evt.gamma+20) * 2)+"px, "+ 
((evt.beta-90) * -3)+"px) " ;

1 Ответ

0 голосов
/ 25 августа 2018

Все свойства события, включая gamma, доступны только для чтения , поэтому вам необходимо присвоить -35 и 35 новой переменной.См. документацию .

Пример:

let newGamma = evt.gamma;

if(evt.gamma < -35){
  newGamma = -35;
}
else if(evt.gamma > 35){
  newGamma = 35;
}

var trans = " translate(" + ((newGamma + 20) * 2) + "px, " + ((evt.beta - 90) * -3) + "px) ";

Более простой пример с использованием Math методов:

var trans = " translate(" + ((Math.min(Math.max(evt.gamma, -35), 35) + 20) * 2) + "px, " + ((evt.beta - 90) * -3) + "px) ";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...