터치 장치에서 CSS 스타일을 가리거나 제거하는 방법


141

:hover사용자가 터치 장치를 통해 웹 사이트를 방문하면 모든 CSS 선언 을 무시하고 싶습니다 . 때문에 :hoverCSS를 이해하고,하지 않는 요소가 포커스를 잃을 때까지 클릭 / 탭에 태블릿 트리거는 다음 스틱 수 있기 때문에 경우에도 방해 할 수있다. 솔직히 말해서, 터치 장치가 왜 :hover처음 부터 트리거해야한다고 생각하는지 모르겠습니다. 그러나 이것이 현실이므로이 문제도 현실입니다.

a:hover {
   color:blue;
   border-color:green;
   // etc. > ignore all at once for touch devices
}

그렇다면 :hover터치 장치에 대해 선언 한 후 모든 CSS 선언을 한 번에 (각각 알 필요없이) 제거하거나 무시할 수 있습니까?



1
나는보기 장치가 모바일인지 아닌지를 발견하고 그에 따라 다양한 변경 사항이있는 올바른 스타일 시트를 사용하는 PHP 솔루션 으로이 문제를 해결합니다. 그래도 귀하의 질문에 대답하지 않습니다. @media 쿼리를 사용할 수는 있지만 전화 및 태블릿의 풀 HD 해상도를 사용할 때 작동하지 않을 수 있습니다.
TomFirth

답변:


171

tl; dr 이것을 사용하십시오 : https://jsfiddle.net/57tmy8j3/

왜 또는 다른 옵션이 있는지 관심이 있으시면 계속 읽으십시오.

Quick'n'dirty-JS를 사용하여 호버 스타일 제거

:hoverJavascript 를 사용하여 포함 된 모든 CSS 규칙을 제거 할 수 있습니다 . 이것은 CSS를 건드릴 필요가없고 구형 브라우저와도 호환되는 장점이 있습니다.

function hasTouch() {
  return 'ontouchstart' in document.documentElement
         || navigator.maxTouchPoints > 0
         || navigator.msMaxTouchPoints > 0;
}

if (hasTouch()) { // remove all the :hover stylesheets
  try { // prevent exception on browsers not supporting DOM styleSheets properly
    for (var si in document.styleSheets) {
      var styleSheet = document.styleSheets[si];
      if (!styleSheet.rules) continue;

      for (var ri = styleSheet.rules.length - 1; ri >= 0; ri--) {
        if (!styleSheet.rules[ri].selectorText) continue;

        if (styleSheet.rules[ri].selectorText.match(':hover')) {
          styleSheet.deleteRule(ri);
        }
      }
    }
  } catch (ex) {}
}

제한 사항 : 스타일 시트는 동일한 도메인 에서 호스팅되어야 합니다 (즉, CDN이 없음). UX를 ​​손상시키는 Surface 또는 iPad Pro와 같은 혼합 마우스 및 터치 장치 에서 호버를 비활성화합니다 .

CSS 전용-미디어 쿼리 사용

모든 : 호버 규칙을 @media블록에 배치하십시오.

@media (hover: hover) {
  a:hover { color: blue; }
}

또는 대안으로 모든 호버 규칙을 무시하십시오 (이전 브라우저와 호환 가능).

a:hover { color: blue; }

@media (hover: none) {
  a:hover { color: inherit; }
}

제한 사항 : WebView를 사용하는 경우 iOS 9.0 이상, Android 용 Chrome 또는 Android 5.0 이상에서만 작동합니다. hover: hover이전 브라우저에서 마우스 hover: none오버 효과를 중단 하고 이전에 정의 된 모든 CSS 규칙을 재정의해야합니다. 둘 다 혼합 마우스 및 터치 장치와 호환되지 않습니다 .

가장 강력한 기능-JS를 통한 터치 감지 및 CSS 접두사

이 방법은 모든 호버 규칙 앞에로 표시해야합니다 body.hasHover. (또는 선택한 학급 이름)

body.hasHover a:hover { color: blue; }

hasHover클래스를 사용하여 첨가 될 수있다 hasTouch()첫 번째 예에서 :

if (!hasTouch()) document.body.className += ' hasHover'

그러나이 예에서는 이전 예제와 혼합 터치 장치의 단점이 동일하여 궁극적 인 솔루션을 제공합니다. 마우스 커서를 움직일 때마다 호버 효과를 활성화하고 터치가 감지 될 때마다 호버 효과를 비활성화하십시오.

function watchForHover() {
  // lastTouchTime is used for ignoring emulated mousemove events
  let lastTouchTime = 0

  function enableHover() {
    if (new Date() - lastTouchTime < 500) return
    document.body.classList.add('hasHover')
  }

  function disableHover() {
    document.body.classList.remove('hasHover')
  }

  function updateLastTouchTime() {
    lastTouchTime = new Date()
  }

  document.addEventListener('touchstart', updateLastTouchTime, true)
  document.addEventListener('touchstart', disableHover, true)
  document.addEventListener('mousemove', enableHover, true)

  enableHover()
}

watchForHover()

이것은 기본적으로 모든 브라우저에서 작동하며 필요에 따라 호버 스타일을 활성화 / 비활성화합니다.

전체 예제는 다음과 같습니다-현대 : https://jsfiddle.net/57tmy8j3/
레거시 (이전 브라우저와 함께 사용) : https://jsfiddle.net/dkz17jc5/19/


감사합니다! 단 하나의 주석 : ? document.styleSheets를 사용하는 대신 먼저 존재 하는지 확인하는 것이 좋지 않습니다 try/catch.
Simon Ferndriger

1
try/catch이상한 오류가 표시되는 경우에 사용했습니다. 동일한 원본 정책으로 인해 deleteRule이 작동하지 않거나 IE의 비정상적인 지원으로 인해 스크립트가 충돌 할 수 있습니다 (댓글을 편집하기 위해 주석 편집). 그러나 대부분의 경우 간단한 확인만으로 충분합니다.
블레이드

1
Firefox를 포함한 데스크탑 브라우저는 'notouch'를 일으키지 않을 것입니다. 터치 이벤트 이해를보고합니다.
Harry B

3
이 솔루션은 호버 마우스 작동하지만 터치 이벤트에 대한 것이다 혼합 장치에 대한 작동하지 않습니다
NBAR

2
@Haneev 특정 사례는 아니지만 대부분의 경우에 맞습니다. 규칙을 적용하면 코드가 복잡 해져서 답을 이해하기가 더 어려워집니다. 규칙을 나누거나 두 번째 솔루션을 사용하는 것이 좋습니다. 어쨌든 더 강력합니다. 그러나 첫 번째 솔루션을 너무 복잡하게 만들지 않고 개선 할 수 있다면 편집을 제안 할 수 있습니다.
블레이드

43

포인터 적응구조에 대한 !

한동안 다루지 않았으므로 다음을 사용할 수 있습니다.

a:link {
   color: red;
}

a:hover {
   color:blue;
}

@media (hover: none) {
   a:link {
      color: red;
   }
}

데스크탑 브라우저와 전화 브라우저 모두 에서이 데모를보십시오 . 최신 터치 장치에서 지원 합니다 .

참고 : Surface PC의 기본 입력 (기능)은 마우스이므로 분리 된 (태블릿) 화면이더라도 파란색 링크가됩니다. 브라우저는 항상 가장 정확한 입력 기능을 기본값으로 설정해야합니다.


고마워, 이것은 편리 할 것이다! 그러나 모바일 모드에서 Chrome으로 사용해 보았지만 제대로 작동하지 않았습니다. "탭"하면 어쨌든 파란색으로
바뀌 었

1
@SimonFerndriger 이것은 Chrome devtools의 제한 사항입니다. 실제 터치 전용 장치에서 링크를 열어보십시오.
Jason T Featheringham

1
iPad Chrome / Safari와 OS X Chrome / Safari에서 완벽하게 작동합니다. 감사! 마지막으로 작은 시각적 문제에 대한 우아한 솔루션입니다.
rakaloof

3
iOS 11을 실행하는 실제 iPhone 6S 에서이 작업을 시도했는데 링크가 파란색으로 바뀌 었습니다.
Lukas Petr

1
Android 8.1.0 및 Chrome 68.0.3440.91을 실행하는 Nexus 5X 에서도이 기능을 사용해보십시오. 링크가 파란색으로 바뀌 었습니다.
Trevin Avery

12

나는 같은 문제 (내 경우에는 삼성 모바일 브라우저에서)가 발생 하여이 질문에 걸려 들었습니다.

Calsal의 답변 덕분에 나는 시도한 모바일 브라우저에서 인식하는 것처럼 보이기 때문에 거의 모든 데스크탑 브라우저를 제외시킬 것으로 생각되는 것을 발견했습니다 (컴파일 된 테이블의 스크린 샷 : CSS 포인터 기능 감지 테이블 ).

MDN 웹 문서에 따르면

포인터 CSS @media 기능은 사용자의 기본 입력 메커니즘이 포인팅 장치인지 여부에 따라 스타일을 적용하는 데 사용될 수 있습니다.

.

내가 발견 한 것은 그 포인터입니다. 거친 은 첨부 된 테이블의 모든 데스크탑 브라우저에는 알려지지 않았지만 동일한 테이블의 모든 모바일 브라우저에는 알려져 있습니다. 다른 모든 포인터 키워드 값이 일관되지 않은 결과를 나타 내기 때문에 이것이 가장 효과적인 선택 인 것 같습니다.

따라서 설명이 있지만 약간 수정 된 Calsal 과 같은 미디어 쿼리를 구성 할 수 있습니다. 모든 터치 장치를 배제하기 위해 역 논리를 사용합니다.

사스 믹스 인 :

@mixin hover-supported {    
    /* 
     * https://developer.mozilla.org/en-US/docs/Web/CSS/@media/pointer 
     * coarse: The primary input mechanism includes a pointing device of limited accuracy.
     */
    @media not all and (pointer: coarse) {
        &:hover {
            @content;
        }
    }
}

a {
    color:green;
    border-color:blue;

    @include hover-supported() {
        color:blue;
        border-color:green;
    }
}

컴파일 된 CSS :

a {
  color: green;
  border-color: blue;
}
@media not all and (pointer: coarse) {
  a:hover {
    color: blue;
    border-color: green;
  }
}

또한 문제를 연구 한 후 만든 이 요지에 설명되어 있습니다. 코드 펜경험적 연구를위한 .

업데이트 : 2018-08-23이 업데이트를 작성하고 @DmitriPavlutin이 지적한이 기술은 더 이상 Firefox 데스크톱에서 작동하지 않는 것 같습니다.


감사합니다 @ DmitriPavlutin, 테이블에 따르면 (컴파일 할 때)해야하지만 다른 모습을 취할 수 있습니다.
ProgrammerPer

@DmitriPavlutin 당신은 실제로 맞습니다. 답을 업데이트 할 것입니다
ProgrammerPer

1
독점적으로 터치 장치와 함께 사용하는 경우 Firefox 데스크탑에서 작동하지 않습니까? 내가 시도한 모든 것과 잘 작동합니다.
FuzzeeLowgeek

@FuzzeeLowgeek은 좋은 소리! 마지막으로 확인한 시간은 2018-08-23이므로 확실하게 확인할 수 있다면 대답을 다시 업데이트 할 수 있습니까?
프로그래머

9

Jason의 답변 에 따르면 순수한 CSS 미디어 쿼리로 호버를 지원하지 않는 장치 만 해결할 수 있습니다. 또한 유사한 질문에 대한 moogal의 답변 과 같이 호버를 지원하는 장치 만 처리 할 수 ​​있습니다 @media not all and (hover: none). 이상하게 보이지만 작동합니다.

더 쉽게 사용할 수 있도록 Sass mixin을 만들었습니다.

@mixin hover-supported {
    @media not all and (hover: none) {
        &:hover {
            @content;
        }
    }
}

2019-05-15 업데이트 : CSS로 타겟팅 할 수있는 모든 다른 장치를 거치는 Medium 의이 기사를 추천 합니다 . 기본적으로 이러한 미디어 규칙을 혼합하여 특정 대상에 맞게 결합합니다.

@media (hover: hover) {
    /* Device that can hover (desktops) */
}
@media (hover: none) {
    /* Device that can not hover with ease */
}
@media (pointer: coarse) {
    /* Device with limited pointing accuracy (touch) */
}
@media (pointer: fine) {
    /* Device with accurate pointing (desktop, stylus-based) */
}
@media (pointer: none) {
    /* Device with no pointing */
}

특정 대상의 예 :

@media (hover: none) and (pointer: coarse) {
    /* Smartphones and touchscreens */
}

@media (hover: hover) and (pointer: fine) {
    /* Desktops with mouse */
}

믹스 인을 좋아합니다. 이것이 호버 믹스 인을 사용하여이를 지원하는 기기 만 타겟팅하는 방법입니다.

@mixin on-hover {
    @media (hover: hover) and (pointer: fine) {
        &:hover {
            @content;
        }
    }
}

button {
    @include on-hover {
        color: blue;
    }
}

전혀 작동하지 않습니다. 호버 지원 : 호버 지원 믹스 인에 대한 미디어 쿼리에 없음? 당신은 포인터가 필요합니다 : 다른 답변에 따라 조잡하십시오.
Allan Nienhuis

시도해 보았습니까, 아니면 이상하게 보이기 때문에 작동하지 않는다고 말합니까? 그렇기 때문에 "이상해 보인다"고 썼다. 그리고 그것은 포인터없이 나를 위해 일한다 : 거친.
Calsal

내 OnePlus 5T (Chrome 및 Firefix 모두)에서 CSS 접근 방식에 일관성이없는 결과가있었습니다. 이것은 iOS에서 잘 작동했지만 OnePlus에서 작동하지 못했습니다. 나는 모든 포인터와 호버를
Zeth

6

나는 현재 비슷한 문제를 다루고 있습니다.

나에게 즉시 발생하는 두 가지 주요 옵션이 있습니다. (1) 사용자 문자열 확인 또는 (2) 다른 URL을 사용하여 별도의 모바일 페이지를 유지하고 사용자가 더 나은 것을 선택하도록합니다.

  1. PHP 또는 Ruby와 같은 인터넷 덕트 테이프 언어를 사용할 수 있는 경우 페이지를 요청하는 장치 의 사용자 문자열 을 확인 <link rel="mobile.css" />하고 일반 스타일 대신 동일한 컨텐츠를 제공 할 수 있습니다.

사용자 문자열에는 브라우저, 렌더러, 운영 체제 등에 대한 식별 정보가 있습니다. "터치"대 비 터치 장치를 결정하는 것은 사용자의 몫입니다. 이 정보를 어딘가에서 찾아 시스템에 맵핑 할 수 있습니다.

A. 기존 브라우저무시할 수있는 경우 모바일이 아닌 일반 CSS에 단일 규칙을 추가하면됩니다 (예 : EDIT : Erk). 참조 - 어떤 실험을하고 후에, 나는 규칙 아래는 단지 비활성화 된 미적 효과를 유발하는 것 외에도 웹킷 브라우저에서 링크를 따라 할 수있는 기능 비활성화 발견 http://jsfiddle.net/3nkcdeao/
당신은 할 것 같은를 여기에 표시된 것보다 모바일 사례에 대한 규칙을 수정하는 방법에 대해 조금 더 선택적이지만 유용한 출발점이 될 수 있습니다.

* { 
    pointer-events: none !important; /* only use !important if you have to */
}

참고로 부모에서 포인터 이벤트를 비활성화 한 다음 자식에서 명시 적으로 활성화하면 자식 요소가 들어 오면 부모의 호버링 효과가 다시 활성화됩니다 :hover. http://jsfiddle.net/38Lookhp/5/
참조

B. 레거시 웹 렌더러를 지원하는 경우에 특별한 스타일을 설정하는 규칙을 제거하는 과정에서 약간 더 많은 작업을 수행해야합니다 :hover. 모든 사람의 시간을 절약하기 위해 표준 스타일 시트에서 실행되는 모바일 카피 + sed 명령을 모바일 버전으로 작성 하기 만하면 됩니다. 그러면 표준 코드를 작성 / 업데이트 :hover하고 모바일 버전의 페이지에 사용되는 모든 스타일 규칙을 제거 할 수 있습니다 .

  1. (I) 또는 단순히 사용자에게 website.com 외에도 모바일 장치 용 m.website.com 이 있음을 알리 십시오 . 하위 도메인 지정이 가장 일반적인 방법이지만 모바일 사용자가 수정 된 페이지에 액세스 할 수 있도록 특정 URL을 예측 가능한 다른 수정 방법으로 사용할 수도 있습니다. 이 단계에서 사이트의 다른 부분을 탐색 할 때마다 URL을 수정할 필요가 없도록해야합니다.

여기서도 스타일 시트에 추가 규칙을 추가하거나 sed 또는 이와 유사한 유틸리티를 사용하여 약간 더 복잡한 작업을 수행 할 수 있습니다 . CSS를 녹이는 대신 js 또는 서버 언어를 사용하는 모바일 사용자를 위해 성가신 일을하는 요소에 div:not(.disruptive):hover {...추가 class="disruptive"하는 것과 같은 스타일 규칙에 적용하지 않는 것이 가장 쉬운 방법 일 것입니다.

  1. (II) 실제로 처음 두 가지를 결합 할 수 있으며 (사용자가 잘못된 버전의 페이지로 방황 한 것으로 의심되는 경우) 모바일 유형 디스플레이로 전환하거나 링크를 해제 할 것을 제안 할 수 있습니다. 사용자가 앞뒤로 퍼지도록 허용합니다. 이미 언급했듯이 @media 쿼리는 방문하는 데 사용되는 것을 결정하는 데 사용할 수 있습니다.

  2. (III) 어떤 장치가 "터치"인지 아닌지 알고 난 후에 jQuery 솔루션을 사용한다면 터치 스크린 장치에서 CSS 호버가 무시되지 않을 수도 있습니다 .


pointer-events- 그 놀라운! 바로 내가 찾던 것입니다. 고마워요!
Simon Ferndriger

1
@SimonFerndriger 글쎄, 앞으로 도움이되기를 바랍니다. 주의 사항을 명심하십시오 . <a>링크는 아래에서 액세스 할 수 없습니다 pointer-events:none. 운이 좋으면 나중에 변경 될 것입니다. 또는 CSS 3.x 또는 4.0+는 그 pointer-events:navigation-only와 비슷하거나 비슷합니다.
SeldomNeedy

6

이 시도:

@media (hover:<s>on-demand</s>) {
    button:hover {
        background-color: #color-when-NOT-touch-device;
    }
}

업데이트 : 불행히도 W3C는 사양 에서이 속성을 제거했습니다 ( https://github.com/w3c/csswg-drafts/commit/2078b46218f7462735bb0b5107c9a3e84fb4c4b1 ).


이것은 실제로 문제를 해결할 것입니다. 나는 이것에 대해 들어 본 적이 없다. 어떤 브라우저 버전에서 작동합니까?
Simon Ferndriger


좋습니다 ... 넓은 브라우저를 지원하지 않습니다.
Giacomo Paita

멋지다! 이러한 편리한 솔루션에 감사드립니다. W3C 표준에 추가되기를 바랍니다.
GProst

기꺼이 도와 드리겠습니다 ^^
Marouen Mhiri

5

당신은 사용할 수 있습니다 모더 나이저 JS (이 참조 StackOverflow의 응답을 ), 또는 사용자 정의 JS 기능을합니다

function is_touch_device() {
 return 'ontouchstart' in window        // works on most browsers 
  || navigator.maxTouchPoints;       // works on IE10/11 and Surface
};

if ( is_touch_device() ) {
  $('html').addClass('touch');
} else {
  $('html').addClass('no-touch');
} 

브라우저에서 터치 이벤트 의 지원감지 한 후 다음 CSS과 같이 html.no-touch클래스를 사용 하여 요소를 순회하면서 일반 특성 을 지정 하십시오.

html.touch a {
    width: 480px;
}

/* FOR THE DESKTOP, SET THE HOVER STATE */
html.no-touch a:hover {
   width: auto;
   color:blue;
   border-color:green;
}

@blade에서 제안한 것이지만 html태그 대신 태그를 사용하면 body조금 더 읽기 좋습니다. 그것이 실제로 현재 사용중인 솔루션입니다. 어쨌든 고마워
Simon Ferndriger

1

도움이되었습니다 : 링크

function hoverTouchUnstick() {
    // Check if the device supports touch events
    if('ontouchstart' in document.documentElement) {
        // Loop through each stylesheet
        for(var sheetI = document.styleSheets.length - 1; sheetI >= 0; sheetI--) {
            var sheet = document.styleSheets[sheetI];
            // Verify if cssRules exists in sheet
            if(sheet.cssRules) {
                // Loop through each rule in sheet
                for(var ruleI = sheet.cssRules.length - 1; ruleI >= 0; ruleI--) {
                    var rule = sheet.cssRules[ruleI];
                    // Verify rule has selector text
                    if(rule.selectorText) {
                        // Replace hover psuedo-class with active psuedo-class
                        rule.selectorText = rule.selectorText.replace(":hover", ":active");
                    }
                }
            }
        }
    }
}

1

이것은 가능한 해결 방법이지만 CSS를 통해 추가해야합니다. .no-touch 를 살펴보고 호버 스타일 전에 클래스를 해야합니다.

자바 스크립트 :

if (!("ontouchstart" in document.documentElement)) {
document.documentElement.className += " no-touch";
}

CSS 예 :

<style>
p span {
    display: none;
}

.no-touch p:hover span {
    display: inline;
}
</style>
<p><a href="/">Tap me</a><span>You tapped!</span></p>

출처

Ps 그러나 우리는 마우스 입력을 동시에 지원하는 점점 더 많은 터치 장치가 시장에 출시되고 있음을 기억해야합니다.


0

이것은 아직 완벽한 솔루션이 아닐 수도 있지만 (jQuery와 함께) 작동 할 방향 / 개념 일 수도 있습니다. 즉, 기본적으로 : hover css 상태를 비활성화하고 mousemove 이벤트가 문서의 어느 곳에서나 감지되면 활성화합니다. 물론 누군가 js를 비활성화하면 작동하지 않습니다. 이런 식으로하는 것에 대해 다른 말을 할 수있는 것은 무엇입니까?

아마도 이런 식으로 :

CSS :

/* will only work if html has class "mousedetected" */
html.mousedetected a:hover {
   color:blue;
   border-color:green;
}

jQuery :

/* adds "mousedetected" class to html element if mouse moves (which should never happen on touch-only devices shouldn’t it?) */
$("body").mousemove( function() {
    $("html").addClass("mousedetected");
});

1
한 가지 문제는 실제로 터치 장치에서 무언가를 클릭 할 때 .mousemove ()이기도하다는 것입니다.
upstruct

1
그리고이 이벤트를 중단없이 트리거하여 성능에 영향을 줄 수 있습니다. 이것이 효과가 있다면, 더 잘 사용해야하는 것보다$('body').one.('mousemove', ...)
Simon Ferndriger

0

이것을 시도하십시오 (이 예제에서는 배경색과 배경색을 사용합니다).

var ClickEventType = ((document.ontouchstart !== null) ? 'click' : 'touchstart');

if (ClickEventType == 'touchstart') {
            $('a').each(function() { // save original..
                var back_color = $(this).css('background-color');
                var background = $(this).css('background');
                $(this).attr('data-back_color', back_color);
                $(this).attr('data-background', background);
            });

            $('a').on('touchend', function(e) { // overwrite with original style..
                var background = $(this).attr('data-background');
                var back_color = $(this).attr('data-back_color');
                if (back_color != undefined) {
                    $(this).css({'background-color': back_color});
                }
                if (background != undefined) {
                    $(this).css({'background': background});
                }
            }).on('touchstart', function(e) { // clear added stlye="" elements..
                $(this).css({'background': '', 'background-color': ''});
            });
}

CSS :

a {
    -webkit-touch-callout: none;
    -webkit-tap-highlight-color: transparent;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

0

더러워진 방법 ... 우아하지는 않지만 가장 쉽게 구할 수있는 방법입니다.

호버를 특징 짓는 것을 제거하십시오.

.your-class:hover:before {
  color: blue;
  background: linear-gradient(to bottom, rgba(231,56,39,0) 0%, #aaaaaa 100%);
}

@media all and (min-width:320px) and (max-width: 960px) {
    .your-class:hover:before {
    color: black;
    background: transparent;
  }
}

0

파란색 투명 색상으로 덮인 Android 및 전체 div를 터치 / 탭 할 때 문제가 발생하는 경우! 그런 다음 그냥 변경해야합니다

커서 : 포인터; CURSOR : DEFAULT;

mediaQuery를 사용하여 휴대폰 / 태블릿에 숨길 수 있습니다.

이것은 나를 위해 작동합니다.


-1

이 쉬운 2019 년 jquery 솔루션을 사용해보십시오.

  1. 이 플러그인을 헤드에 추가하십시오.

    src = "https://code.jquery.com/ui/1.12.0/jquery-ui.min.js"

  2. 이것을 js에 추가하십시오.

    $ ( "*"). on ( "touchend", function (e) {$ (this) .focus ();}); // 모든 요소에 적용

  3. 이에 대한 몇 가지 제안 된 변형은 다음과 같습니다.

    $ ( ": input, : checkbox,"). on ( "touchend", function (e) {(this) .focus);}); // 요소 지정

    $ ( "*"). on ( "click, touchend", function (e) {$ (this) .focus ();}); // 클릭 이벤트 포함

    CSS : 본문 {커서 : 포인터; } // 포커스를 끝내려면 아무 곳이나 터치

노트

  • bootstrap.js 앞에 플러그인을 툴팁에 영향을 미치는 avoif에 배치
  • Safari 또는 Chrome을 사용하여 iphone XR ios 12.1.12 및 ipad 3 ios 9.3.5에서만 테스트되었습니다.

참고 문헌 :

https://code.jquery.com/ui/

https://api.jquery.com/category/selectors/jquery-selector-extensions/


2
2019 년에는 jQuery를 사용할 필요가 없습니다. WebAPI는 매우 강력하고 모든 주요 기능을 지원합니다.
acme

예 ... 2019 년 jQuery? 플래시는 어때? 헤 헤헤
remed.io
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.