Hide iPhone HTML5 video play button

IphoneHtml

Iphone Problem Overview


I want to hide the big play button that appears by default on the <video> element

Is it possible?

Iphone Solutions


Solution 1 - Iphone

I don't have any iOS device handy to test, but perhaps try this:

video::-webkit-media-controls {
	display:none !important;
}

Solution 2 - Iphone

It seems Apple has changed the shadow-dom again.

In order to hide the play button control you must use the following CSS:

/* This used to work for the parent element of button divs */
/* But it does not work with newer browsers, the below doesn't hide the play button parent div */

*::-webkit-media-controls-panel {
  display: none!important;
  -webkit-appearance: none;
}

/* Old shadow dom for play button */

*::-webkit-media-controls-play-button {
  display: none!important;
  -webkit-appearance: none;
}

/* New shadow dom for play button */

/* This one works! */

*::-webkit-media-controls-start-playback-button {
  display: none!important;
  -webkit-appearance: none;
}

Solution 3 - Iphone

A look at the shadow DOM in Safari iOS tells me that what you want (hidding only the big central play button) is:

video::-webkit-media-controls-start-playback-button {
  display: none !important;
}

The answer from Ian hides everything including text tracks (closed captions ...)

Solution 4 - Iphone

Newer iOS versions display such play button when the device is in "Low power mode".

Solution 5 - Iphone

In the video source file you can simply change

controls= "false"

For the Safari CSS, which the native browser on ios, you can also try this hacky trick

.custom-video-controls {
  z-index: 2147483647;
}

Here's a link to a details discussion on managing/hiding controls on HTML 5 video

http://css-tricks.com/custom-controls-in-html5-video-full-screen/

Solution 6 - Iphone

UPDATE OCTOBER 2021

All answers are outdated for iOS 13, 14, and 15. It appears because iOS low power mode prevents autoplay on all videos in the browser by default (to save power).

The best way to remove the annoying play button is to remove the autoplay tag on any video element and start playing the video when there is any user interaction.

React example below:

 <video ref={playerRef} playsInline >
let playVideo = (event) => {
   if (playerRef.current) {
      playerRef.current.play()
   }
}

Sidenote: the play button is hidden in a shadow dom that I am unable to figure out how to hide with external CSS modifications or even JS. If anyone has any ideas on how to hide a shadow dom element then that would be a better solution.

Solution 7 - Iphone

Based on Ian's answer

video::-webkit-media-controls {
    opacity: 0;
}

This will hide all controls. Good for background videos that won't autoplay.

Solution 8 - Iphone

Today @2017 in iOS 10 this works:

.video-background::-webkit-media-controls-panel,
.video-background::-webkit-media-controls-start-playback-button {
    display: none !important;
}

Solution 9 - Iphone

For webapps. Works iOS 10.3 iPhone7 & Safari 10.1 on Mac as well. Thx to previous contributors. I had also the issue that the

'<style type="text/css">'+
    '*::-webkit-media-controls-panel {'+
     '   display: none!important;'+
      '  -webkit-appearance: none;'+
   ' }'+
    /* Old shadow dom for play button */
    '*::--webkit-media-controls-play-button {'+
        'display: none!important;'+
        '-webkit-appearance: none;'+
    '}'+
    /* New shadow dom for play button */
    /* This one works */
    '*::-webkit-media-controls-start-playback-button {'+
        'display: none!important;'+
       ' -webkit-appearance: none;'+
        '}'+
    +'</style>'

Solution 10 - Iphone

Try this:

video {
    &::-webkit-media-controls {
        display:none !important;
    }

    &::-webkit-media-controls-start-playback-button {
        display: none!important;
        -webkit-appearance: none;
    }
}

Solution 11 - Iphone

Update:

IOS 13.*

  video::slotted::-webkit-media-controls-container{
      display:none !important;
      visibility: hidden!important;
      opacity: 0 !important;
     -webkit-appearance: none !important;
    }


IOS 14 changed selector to

:host::shadow::-webkit-media-controls-container{/* hide the element */}

helpful resource: html5rocks shadow dom 201

Solution 12 - Iphone

You can't remove the play button. This video placeholder always appears as the doc says : iPhone Video PlaceHolder. But maybe you can detect you're on an iphone and display an image with a link to your video instead of the video tag.

<a href="yourvideo.mp4"><img src="yourposter.png"/></a>

The video will be launched in a player just as a video tag.

Solution 13 - Iphone

According to this answer, in Google Chrome we can hide the big play button like this:

    video::-webkit-media-controls-overlay-play-button {
      display: none;
    }

That might be useful if you want to hide it on Android as well as on iOS.

Solution 14 - Iphone

video::-webkit-media-controls { display:none !important; }

Didn't work for me on iOS, but

*::-webkit-media-controls-panel {
  display: none!important;
 -webkit-appearance: none;
}

/* Old shadow dom for play button */

*::--webkit-media-controls-play-button {
  display: none!important;
  -webkit-appearance: none;
}

/* New shadow dom for play button */

/* This one works */

*::-webkit-media-controls-start-playback-button {
  display: none!important;
  -webkit-appearance: none;
}

Worked perfect!

Solution 15 - Iphone

Yes you can do this! The trick is to "hide" the video controls, by not adding the "controls" attribute to your video tag. Then you let it be dynamically added a few seconds after the video starts to play, by appending the "controls" property to the

<video id="some-video-id" src="some-video-url" poster="some-thumbnail-url" />

<a href="javascript:void(0);" id="startVideoLink">Start the Video</a>

<script type="text/javascript">
    var oVideoTag = document.getElementById('some-video-id');
    var oLink = document.getElementById('startVideoLink');
    if (oLink && oVideoTag) {
        oLink.addEventListener('click',function(e) {
            oVideoTag.play();
            setTimeout(function() {
                oVideoTag.controls = 'controls';
            },2500);
        },false);
    }
</script>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionilyoView Question on Stackoverflow
Solution 1 - IphoneIan DevlinView Answer on Stackoverflow
Solution 2 - IphoneDaemeronView Answer on Stackoverflow
Solution 3 - IphoneArnaud LeyderView Answer on Stackoverflow
Solution 4 - IphoneKamen StoykovView Answer on Stackoverflow
Solution 5 - Iphoneuser3283997View Answer on Stackoverflow
Solution 6 - IphoneNeal SoniView Answer on Stackoverflow
Solution 7 - IphoneChloeView Answer on Stackoverflow
Solution 8 - IphoneBGBRUNOView Answer on Stackoverflow
Solution 9 - IphoneZebra PogoView Answer on Stackoverflow
Solution 10 - IphoneArpitView Answer on Stackoverflow
Solution 11 - IphoneAhmed ShehabView Answer on Stackoverflow
Solution 12 - IphonevincentpView Answer on Stackoverflow
Solution 13 - IphonejoeytwiddleView Answer on Stackoverflow
Solution 14 - IphoneiamwillView Answer on Stackoverflow
Solution 15 - IphoneBrian KueckView Answer on Stackoverflow