আমি কীভাবে বা background-size:coverএইচটিএমএল উপাদানের কার্যকারিতা অনুকরণ করতে পারি ?<video><img>
আমি এটি মত কাজ করতে চাই
background-size: cover;
background-position: center center;
আমি কীভাবে বা background-size:coverএইচটিএমএল উপাদানের কার্যকারিতা অনুকরণ করতে পারি ?<video><img>
আমি এটি মত কাজ করতে চাই
background-size: cover;
background-position: center center;
উত্তর:
এটি এমন কিছু যা আমি কিছুক্ষণের জন্য আমার চুলগুলি টানিয়ে ফেললাম, তবে আমি একটি দুর্দান্ত সমাধান পেয়েছি যা কোনও স্ক্রিপ্ট ব্যবহার করে না এবং সিএসএসের 5 টি লাইন সহ ভিডিওতে একটি নিখুঁত কভার সিমুলেশন অর্জন করতে পারে (যদি আপনি নির্বাচক এবং বন্ধনী গণনা করেন তবে 9 )। এটিতে 0 প্রান্তের কেস রয়েছে যাতে এটি সিএসএস 3- সামঞ্জস্যের সংক্ষিপ্ততার সাথে পুরোপুরি কার্যকর হয় না ।
আপনি এখানে একটি উদাহরণ দেখতে পারেন
টিমোথির সমাধানের সমস্যাটি হ'ল এটি স্কেলিংটি সঠিকভাবে পরিচালনা করে না। পার্শ্ববর্তী উপাদানটি যদি ভিডিও ফাইলের চেয়ে ছোট হয় তবে এটি ছোট করা যায় না। এমনকি আপনি যদি ভিডিও ট্যাগটিকে একটি ছোট প্রাথমিক আকারও দেন, যেমন 16px বাই 9px,auto এটিকে তার সর্বনিম্ন ফাইল-আকারের জন্য জোর করে শেষ করে। এই পৃষ্ঠায় বর্তমানের সর্বোচ্চ ভোট প্রাপ্ত সমাধান সহ, আমার পক্ষে ভিডিও ফাইল স্কেল ডাউন হওয়া অসম্ভব ছিল যার ফলস্বরূপ কঠোর জুম প্রভাব পড়ে।
যদি আপনার ভিডিওর অনুপাতটি জানা থাকে তবে 16: 9 এর মতো আপনি নিম্নলিখিতটি করতে পারেন:
.parent-element-to-video {
overflow: hidden;
}
video {
height: 100%;
width: 177.77777778vh; /* 100 * 16 / 9 */
min-width: 100%;
min-height: 56.25vw; /* 100 * 9 / 16 */
}
যদি ভিডিওর মূল উপাদানটি পুরো পৃষ্ঠাটি (যেমন position: fixed; width: 100%; height: 100vh;) কভার করতে সেট করা থাকে তবে ভিডিওটিও তা করবে।
আপনি যদি ভিডিওটিও কেন্দ্রিক করতে চান তবে আপনি নিশ্চিতরূপে কেন্দ্রিক পদ্ধতির ব্যবহার করতে পারেন:
/* merge with above css */
.parent-element-to-video {
position: relative; /* or absolute or fixed */
}
video {
position: absolute;
left: 50%; /* % of surrounding element */
top: 50%;
transform: translate(-50%, -50%); /* % of current element */
}
অবশ্যই, vw, vh, এবং transformসিএসএস 3, তাই যদি আপনি প্রয়োজন অনেক পুরোনো ব্রাউজারে সাথে সামঞ্জস্যের , আপনি ব্যবহার স্ক্রিপ্ট করতে হবে।
vhএবং vwকিছু কি আছে?
ব্যাকগ্রাউন্ড কভার ব্যবহার করা চিত্রগুলির জন্য সূক্ষ্ম, এবং প্রস্থটি 100%। এগুলি অনুকূল নয় <video>এবং এই উত্তরগুলি অত্যধিক জটিল। পূর্ণ প্রস্থের ভিডিও পটভূমিটি সম্পন্ন করার জন্য আপনার jQuery বা জাভাস্ক্রিপ্টের দরকার নেই।
মনে রাখবেন যে আমার কোডটি কোনও পটভূমি পুরোপুরি কভার উইলের মতো কোনও ভিডিওর সাথে কভার করবে না, তবে এর পরিবর্তে এটি ভিডিওটিকে তত বড় করে তুলবে যেমন অনুপাতের অনুপাত বজায় রাখা এবং এখনও পুরো ব্যাকগ্রাউন্ডটি কভার করতে হবে। যে কোনও অতিরিক্ত ভিডিও পৃষ্ঠার প্রান্ত থেকে রক্তপাত করবে, আপনি যেখানে ভিডিওটি অ্যাঙ্কর করেছেন তার উপর কোন দিকটি নির্ভর করবে।
উত্তরটা বেশ সাধারন.
কেবল এই এইচটিএমএল 5 ভিডিও কোড বা এই লাইন বরাবর কিছু ব্যবহার করুন: (সম্পূর্ণ পৃষ্ঠায় পরীক্ষা)
html, body {
width: 100%;
height:100%;
overflow:hidden;
}
#vid{
position: absolute;
top: 50%;
left: 50%;
-webkit-transform: translateX(-50%) translateY(-50%);
transform: translateX(-50%) translateY(-50%);
min-width: 100%;
min-height: 100%;
width: auto;
height: auto;
z-index: -1000;
overflow: hidden;
}
<video id="vid" video autobuffer autoplay>
<source id="mp4" src="http://grochtdreis.de/fuer-jsfiddle/video/sintel_trailer-480.mp4" type="video/mp4">
</video>
ন্যূনতম উচ্চতা এবং ন্যূনতম প্রস্থ ভিডিওটিকে ভিডিওর অনুপাত বজায় রাখার অনুমতি দেয় যা সাধারণত কোনও সাধারণ রেজোলিউশনে কোনও সাধারণ ব্রাউজারের অনুপাত অনুপাত হয়। যে কোনও অতিরিক্ত ভিডিওর পৃষ্ঠার পাশ থেকে রক্তপাত ঘটে।
min-widthবা min-heightনা।
position: absolute; left: 50%; top: 50%; transform: translateX(-50%) translateY(-50%);।
height: 100%; width: 100%;। এই আধুনিক উত্তরের জন্য ধন্যবাদ
আমি এখানে এটি কীভাবে করেছি। একটি কার্যনির্বাহী উদাহরণ এই জেএসফিডেলে ।
var min_w = 300; // minimum video width allowed
var vid_w_orig; // original video dimensions
var vid_h_orig;
jQuery(function() { // runs after DOM has loaded
vid_w_orig = parseInt(jQuery('video').attr('width'));
vid_h_orig = parseInt(jQuery('video').attr('height'));
$('#debug').append("<p>DOM loaded</p>");
jQuery(window).resize(function () { resizeToCover(); });
jQuery(window).trigger('resize');
});
function resizeToCover() {
// set the video viewport to the window size
jQuery('#video-viewport').width(jQuery(window).width());
jQuery('#video-viewport').height(jQuery(window).height());
// use largest scale factor of horizontal/vertical
var scale_h = jQuery(window).width() / vid_w_orig;
var scale_v = jQuery(window).height() / vid_h_orig;
var scale = scale_h > scale_v ? scale_h : scale_v;
// don't allow scaled width < minimum video width
if (scale * vid_w_orig < min_w) {scale = min_w / vid_w_orig;};
// now scale the video
jQuery('video').width(scale * vid_w_orig);
jQuery('video').height(scale * vid_h_orig);
// and center it by scrolling the video viewport
jQuery('#video-viewport').scrollLeft((jQuery('video').width() - jQuery(window).width()) / 2);
jQuery('#video-viewport').scrollTop((jQuery('video').height() - jQuery(window).height()) / 2);
// debug output
jQuery('#debug').html("<p>win_w: " + jQuery(window).width() + "</p>");
jQuery('#debug').append("<p>win_h: " + jQuery(window).height() + "</p>");
jQuery('#debug').append("<p>viewport_w: " + jQuery('#video-viewport').width() + "</p>");
jQuery('#debug').append("<p>viewport_h: " + jQuery('#video-viewport').height() + "</p>");
jQuery('#debug').append("<p>video_w: " + jQuery('video').width() + "</p>");
jQuery('#debug').append("<p>video_h: " + jQuery('video').height() + "</p>");
jQuery('#debug').append("<p>vid_w_orig: " + vid_w_orig + "</p>");
jQuery('#debug').append("<p>vid_h_orig: " + vid_h_orig + "</p>");
jQuery('#debug').append("<p>scale: " + scale + "</p>");
};
#video-viewport {
position: absolute;
top: 0;
overflow: hidden;
z-index: -1; /* for accessing the video by click */
}
#debug {
position: absolute;
top: 0;
z-index: 100;
color: #fff;
font-size: 12pt;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="video-viewport">
<video autoplay controls preload width="640" height="360">
<source src="http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4"type="video/mp4" />
<source src="http://www.quirksmode.org/html5/videos/big_buck_bunny.webm"type="video/webm" />
<source src="http://www.quirksmode.org/html5/videos/big_buck_bunny.ogv"type="video/webm" />
</video>
</div>
<div id="debug"></div>
video { min-width: 100%; min-height: 100%; }এবং এটি একটি কবজির মতো কাজ করে।
background-size: coverভিডিওর জন্য চান তবে এটি আপনার প্রয়োজন ।
অন্যান্য উত্তরগুলি ভাল ছিল তবে সেগুলিতে জাভাস্ক্রিপ্ট জড়িত বা তারা ভিডিওটিকে অনুভূমিকভাবে এবং উল্লম্বভাবে কেন্দ্র করে না।
আপনি এই পুরো সিএসএস সমাধানটি এমন একটি ভিডিও পেতে পারেন যাতে ব্যাকগ্রাউন্ড-আকার: কভার সম্পত্তি:
video {
position: fixed; // Make it full screen (fixed)
right: 0;
bottom: 0;
z-index: -1; // Put on background
min-width: 100%; // Expand video
min-height: 100%;
width: auto; // Keep aspect ratio
height: auto;
top: 50%; // Vertical center offset
left: 50%; // Horizontal center offset
-webkit-transform: translate(-50%,-50%);
-moz-transform: translate(-50%,-50%);
-ms-transform: translate(-50%,-50%);
transform: translate(-50%,-50%); // Cover effect: compensate the offset
background: url(bkg.jpg) no-repeat; // Background placeholder, not always needed
background-size: cover;
}
ড্যানিয়েল ডি উইটের উত্তরের ভিত্তিতে এবং মন্তব্যের আমি আরও কিছুটা অনুসন্ধান করেছি। সমাধানের জন্য তাকে ধন্যবাদ।
সমাধানটি হ'ল ব্যবহার করা object-fit: cover;যার একটি দুর্দান্ত সমর্থন (প্রতিটি আধুনিক ব্রাউজার এটি সমর্থন করে)। আপনি যদি সত্যিই আইই সমর্থন করতে চান তবে আপনি পলিফিলের মতো অবজেক্ট-ফিট-ইমেজ বা অবজেক্ট-ফিট ব্যবহার করতে পারেন ।
ডেমোস:
img {
float: left;
width: 100px;
height: 80px;
border: 1px solid black;
margin-right: 1em;
}
.fill {
object-fit: fill;
}
.contain {
object-fit: contain;
}
.cover {
object-fit: cover;
}
.none {
object-fit: none;
}
.scale-down {
object-fit: scale-down;
}
<img class="fill" src="http://www.peppercarrot.com/data/wiki/medias/img/chara_carrot.jpg"/>
<img class="contain" src="http://www.peppercarrot.com/data/wiki/medias/img/chara_carrot.jpg"/>
<img class="cover" src="http://www.peppercarrot.com/data/wiki/medias/img/chara_carrot.jpg"/>
<img class="none" src="http://www.peppercarrot.com/data/wiki/medias/img/chara_carrot.jpg"/>
<img class="scale-down" src="http://www.peppercarrot.com/data/wiki/medias/img/chara_carrot.jpg"/>
এবং একটি পিতামাতার সাথে:
div {
float: left;
width: 100px;
height: 80px;
border: 1px solid black;
margin-right: 1em;
}
img {
width: 100%;
height: 100%;
}
.fill {
object-fit: fill;
}
.contain {
object-fit: contain;
}
.cover {
object-fit: cover;
}
.none {
object-fit: none;
}
.scale-down {
object-fit: scale-down;
}
<div>
<img class="fill" src="http://www.peppercarrot.com/data/wiki/medias/img/chara_carrot.jpg"/>
</div><div>
<img class="contain" src="http://www.peppercarrot.com/data/wiki/medias/img/chara_carrot.jpg"/>
</div><div>
<img class="cover" src="http://www.peppercarrot.com/data/wiki/medias/img/chara_carrot.jpg"/>
</div><div>
<img class="none" src="http://www.peppercarrot.com/data/wiki/medias/img/chara_carrot.jpg"/>
</div><div>
<img class="scale-down" src="http://www.peppercarrot.com/data/wiki/medias/img/chara_carrot.jpg"/>
</div>
object-fit: coverএবং widthএবং height100% সেট, আপনি একটি আনুপাতিক-স্কেল পেতে imgবা videoকোন অতিরিক্ত মনোযোগ ছাড়া কেন্দ্রে জুম।
এম-পিক্সেলের সমাধানটি দুর্দান্ত যে এটি টিমোথির উত্তরটির স্কেলিং সমস্যাটি সমাধান করে (ভিডিওটি স্কেল হবে তবে নীচে নেমে আসবে না, সুতরাং যদি আপনার ভিডিওটি সত্যিই বড় হয় তবে এর অংশে আপনি কেবল একটি ছোট জুম দেখতে পাবেন)। তবে, সমাধানটি ভিডিও ধারকের আকার সম্পর্কিত মিথ্যা অনুমানের উপর ভিত্তি করে তৈরি করা হয়েছে, এটি ভিউপোর্টের প্রস্থ এবং উচ্চতার 100% অগত্যা প্রয়োজনীয়। আমি বেশ কয়েকটি কেস পেয়েছি যেখানে এটি আমার পক্ষে কার্যকর হয়নি, তাই আমি নিজেই সমস্যাটি সমাধান করার সিদ্ধান্ত নিয়েছি এবং আমি বিশ্বাস করি যে আমি চূড়ান্ত সমাধান নিয়ে এসেছি ।
এইচটিএমএল
<div class="parent-container">
<div class="video-container">
<video width="1920" height="1080" preload="auto" autoplay loop>
<source src="video.mp4" type="video/mp4">
</video>
</div>
</div>
সিএসএস
.parent-container {
/* any width or height */
position: relative;
overflow: hidden;
}
.video-container {
width: 100%;
min-height: 100%;
position: absolute;
left: 0px;
/* center vertically */
top: 50%;
-moz-transform: translate(0%, -50%);
-ms-transform: translate(0%, -50%);
-webkit-transform: translate(0%, -50%);
transform: translate(0%, -50%);
}
.video-container::before {
content: "";
display: block;
height: 0px;
padding-bottom: 56.25%; /* 100% * 9 / 16 */
}
.video-container video {
width: auto;
height: 100%;
position: absolute;
top: 0px;
/* center horizontally */
left: 50%;
-moz-transform: translate(-50%, 0%);
-ms-transform: translate(-50%, 0%);
-webkit-transform: translate(-50%, 0%);
transform: translate(-50%, 0%);
}
এটি ভিডিওর অনুপাতের ভিত্তিতেও তৈরি হয়েছে, সুতরাং যদি আপনার ভিডিওর অনুপাত 16/9 বাদে থাকে তবে আপনি প্যাডিং-বটম% পরিবর্তন করতে চাইবেন। তা ছাড়া, এটি বাক্সের বাইরে কাজ করে। আইই 9 +, সাফারি 9.0.1, ক্রোম 46, এবং ফায়ারফক্স 41 এ পরীক্ষিত।
যেহেতু আমি এই উত্তর, পোস্ট আমি একটা ছোট সিএসএস মডিউল উভয় অনুকরণ লিখেছি background-size: coverএবং background-size: containউপর <video>উপাদান: http://codepen.io/benface/pen/NNdBMj
এটি ভিডিওর জন্য বিভিন্ন প্রান্তিককরণ সমর্থন করে (অনুরূপ background-position)। এছাড়াও লক্ষ করুন যে containবাস্তবায়ন নিখুঁত নয়। বিপরীতে background-size: contain, ধারকটির প্রস্থ এবং উচ্চতা বড় হলে ভিডিওটি তার প্রকৃত আকারের চেয়ে বড় হবে না, তবে আমি মনে করি এটি কিছু ক্ষেত্রে এখনও কার্যকর হতে পারে। আমি একটি বিশেষ fill-widthএবং fill-heightক্লাস যুক্ত করেছি যা আপনি একসাথে ব্যবহার করতে পারেন এর containএকটি বিশেষ মিশ্রণ পেতে containএবং cover... এটি চেষ্টা করে দেখুন, এবং এটিকে উন্নত করতে নির্দ্বিধায় বোধ করবেন!
object-fit: coverএফএফ এবং ক্রোমের জন্য এবং
object-fit: cover এই আইই, সাফারি পলফিল সহ সেরা উত্তর।
https://github.com/constancecchen/object-fit-polyfill
এটি সমর্থন করছে img , videoএবং pictureউপাদানসমূহ।
সিএসএস এবং লিটল জেএস ভিডিওটিকে পটভূমিতে এবং অনুভূমিকভাবে কেন্দ্রীভূত করতে পারে।
সিএসএস:
video#bgvid {
position: absolute;
bottom: 0px;
left: 50%;
min-width: 100%;
min-height: 100%;
width: auto;
height: auto;
z-index: -1;
overflow: hidden;
}
জেএস: (উইন্ডোর আকারের সাথে এটি আবদ্ধ করুন এবং একবার আলাদাভাবে কল করুন)
$('#bgvid').css({
marginLeft : '-' + ($('#bgvid').width()/2) + 'px'
})
আমাদের দীর্ঘ মন্তব্য বিভাগের ঠিক পরে, আমি মনে করি আপনি এটি যা খুঁজছেন, এটি jQuery ভিত্তিক:
এইচটিএমএল:
<img width="100%" id="img" src="http://uploads8.wikipaintings.org/images/william-adolphe-bouguereau/self-portrait-presented-to-m-sage-1886.jpg">
জাতীয়:
<script type="text/javascript">
window.onload = function(){
var img = document.getElementById('img')
if(img.clientHeight<$(window).height()){
img.style.height=$(window).height()+"px";
}
if(img.clientWidth<$(window).width()){
img.style.width=$(window).width()+"px";
}
}
</script>
সিএসএস:
body{
overflow: hidden;
}
উপরের কোডটি ব্রাউজারগুলির প্রস্থ এবং উচ্চতা ব্যবহার করছে যদি আপনি যেখানে কোনও ডিভের মধ্যে এটি করছেন, আপনাকে এটির মতো কিছুতে পরিবর্তন করতে হবে:
ডিভের জন্য:
এইচটিএমএল:
<div style="width:100px; max-height: 100px;" id="div">
<img width="100%" id="img" src="http://uploads8.wikipaintings.org/images/william-adolphe-bouguereau/self-portrait-presented-to-m-sage-1886.jpg">
</div>
জাতীয়:
<script type="text/javascript">
window.onload = function(){
var img = document.getElementById('img')
if(img.clientHeight<$('#div').height()){
img.style.height=$('#div').height()+"px";
}
if(img.clientWidth<$('#div').width()){
img.style.width=$('#div').width()+"px";
}
}
</script>
সিএসএস:
div{
overflow: hidden;
}
আমার আরও উল্লেখ করা উচিত যে আমি কেবল এটি গুগল ক্রোমই পরীক্ষা করেছি ... এখানে একটি জেফফিল: http://jsfiddle.net/ADCKk/
আপনার ভিডিওর প্রস্থের চেয়ে কম ব্রাউজারের প্রস্থে থাকাকালীন শীর্ষের উত্তরটি ভিডিওটি কমিয়ে দেয় না। এই সিএসএস ব্যবহার করে চেষ্টা করুন (# বিজিভিড আপনার ভিডিওর আইডি হওয়ার সাথে):
#bgvid {
position: fixed;
top: 50%;
left: 50%;
min-width: 100%;
min-height: 100%;
width: auto;
height: auto;
transform: translateX(-50%) translateY(-50%);
-webkit-transform: translateX(-50%) translateY(-50%);
}
z-indexপ্রয়োজন কেন ?
আমি এই সমাধানটিও পোস্ট করছি, যেহেতু আমার এই সমস্যা ছিল তবে অন্য সমাধানগুলি আমার পরিস্থিতির জন্য কার্যকর হয়নি ...
আমি সঠিকভাবে অনুকরণ মনে করি background-size:cover; উপাদানগুলির ব্যাকগ্রাউন্ড-ইমেজ প্রোপার্টিটির পরিবর্তে কোনও উপাদানকে সিএসএস সম্পত্তি , আপনি বর্তমান উইন্ডোজের অনুপাতের সাথে চিত্রের অনুপাতের তুলনা করতে হবে, তবে আকারটি যাই হোক না কেন (এবং চিত্রটি ক্ষেত্রেও প্রশস্তের চেয়ে লম্বা) উইন্ডোটি হ'ল উপাদানটি উইন্ডোটি পূরণ করছে (এবং এটি কেন্দ্রীভূত করছে, যদিও এটি আমার প্রয়োজন ছিল কিনা তা আমি জানি না) ....
কেবল সরলতার জন্য, একটি চিত্র ব্যবহার করে, আমি নিশ্চিত যে কোনও ভিডিওর উপাদানটিও ঠিকঠাকভাবে কাজ করবে।
প্রথমে উপাদানগুলির অনুপাতটি (একবার এটি লোড হওয়ার পরে) পান, তারপরে উইন্ডোর আকার পরিবর্তন হ্যান্ডলারটি সংযুক্ত করুন, প্রাথমিক আকারের জন্য একবার ট্রিগার করুন:
var img = document.getElementById( "background-picture" ),
imgAspectRatio;
img.onload = function() {
// get images aspect ratio
imgAspectRatio = this.height / this.width;
// attach resize event and fire it once
window.onresize = resizeBackground;
window.onresize();
}
তারপরে আপনার আকার পরিবর্তনকারী হ্যান্ডলারের মধ্যে আপনাকে প্রথমে চিত্রের মূল দিক অনুপাতের সাথে উইন্ডোটির বর্তমান দিক অনুপাতের তুলনা করে প্রস্থ পূরণ করতে হবে বা উচ্চতা পূরণ করতে হবে তা নির্ধারণ করা উচিত।
function resizeBackground( evt ) {
// get window size and aspect ratio
var windowWidth = window.innerWidth,
windowHeight = window.innerHeight;
windowAspectRatio = windowHeight / windowWidth;
//compare window ratio to image ratio so you know which way the image should fill
if ( windowAspectRatio < imgAspectRatio ) {
// we are fill width
img.style.width = windowWidth + "px";
// and applying the correct aspect to the height now
img.style.height = (windowWidth * imgAspectRatio) + "px";
// this can be margin if your element is not positioned relatively, absolutely or fixed
// make sure image is always centered
img.style.left = "0px";
img.style.top = (windowHeight - (windowWidth * imgAspectRatio)) / 2 + "px";
} else { // same thing as above but filling height instead
img.style.height = windowHeight + "px";
img.style.width = (windowHeight / imgAspectRatio) + "px";
img.style.left = (windowWidth - (windowHeight / imgAspectRatio)) / 2 + "px";
img.style.top = "0px";
}
}
এই পদ্ধতির মধ্যে কেবল CSS এবং এইচটিএমএল ব্যবহার করা হয়। আপনি আসলে খুব সহজেই ভিডিওর নীচে একটি ডিভ স্ট্যাক করতে পারেন। এটি কভার করা হয় তবে আপনি আকার পরিবর্তন করার সময় কেন্দ্রিক নয়।
এইচটিএমএল:
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
</script>
</head>
<body>
<div id = "contain">
<div id="vid">
<video autoplay>
<source src="http://www.quirksmode.org/html5/videos/big_buck_bunny.mp4" type="video/mp4" />
</video>
</div>
</div>
</body>
</html>
সিসিএস:
/*
filename:style.css
*/
body {
margin:0;
}
#vid video{
position: absolute;
right: 0;
top: 0;
min-width: 100%;
min-height: 100%;
width: auto;
height: auto;
}
#contain {
width:100%;
height:100%;
zoom:1%;/*Without this the video will be stretched and skewed*/
}
এই প্রশ্নের লুকানো হবস থেকে 6 দিনের মধ্যে শেষ হওয়া +100 খ্যাতি রয়েছে b কেবলমাত্র নমনীয় সিএসএস সমাধান পেতে ভিউপোর্ট ইউনিটগুলির উদ্ভাবনী ব্যবহার।
আপনি কেবলমাত্র একটি সিএসএস সমাধানের জন্য এই প্রশ্নের উপরে একটি খোলাখুলি খোলেন, তাই আমি এটি দিয়ে চেষ্টা করব। এর মতো সমস্যার আমার সমাধান হ'ল ভিডিওর উচ্চতা এবং প্রস্থ নির্ধারণের জন্য একটি নির্দিষ্ট অনুপাত ব্যবহার করা। আমি সাধারণত বুটস্ট্র্যাপ ব্যবহার করি তবে এটিকে কাজ না করেই আমি সেখান থেকে প্রয়োজনীয় সিএসএস বের করেছি। এটি এমন একটি কোড যা আমি আগে অন্য জিনিসগুলির মধ্যে ব্যবহার করেছি যা সঠিক অনুপাত সহ একটি এম্বেড করা ভিডিওকে কেন্দ্র করে। এটির জন্য <video>এবং <img>উপাদানগুলির পক্ষেও কাজ করা উচিত এটি শীর্ষস্থানীয় যা এখানে প্রাসঙ্গিক, তবে ইতিমধ্যে আমি তাদের দুটি রাখার পরে আমি আপনাকে অন্য দুটিটি দিয়েছিলাম। ভাগ্য সুপ্রসন্ন হোক! :)
.embeddedContent.centeredContent {
margin: 0px auto;
}
.embeddedContent.rightAlignedContent {
margin: auto 0px auto auto;
}
.embeddedContent > .embeddedInnerWrapper {
position:relative;
display: block;
padding: 0;
padding-top: 42.8571%; /* 21:9 ratio */
}
.embeddedContent > .embeddedInnerWrapper > iframe {
position: absolute;
top: 0;
left: 0;
bottom: 0;
height: 100%;
width: 100%;
border: 0;
}
.embeddedContent {
max-width: 300px;
}
.box1text {
background-color: red;
}
/* snippet from Bootstrap */
.container {
margin-right: auto;
margin-left: auto;
}
.col-md-12 {
width: 100%;
}
<div class="container">
<div class="row">
<div class="col-md-12">
Testing ratio AND left/right/center align:<br />
<div class="box1text">
<div class="embeddedContent centeredContent">
<div class="embeddedInnerWrapper">
<iframe allowfullscreen="true" allowscriptaccess="always" frameborder="0" height="349" scrolling="no" src="//www.youtube.com/embed/u6XAPnuFjJc?wmode=transparent&jqoemcache=eE9xf" width="425"></iframe>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-12">
Testing ratio AND left/right/center align:<br />
<div class="box1text">
<div class="embeddedContent rightAlignedContent">
<div class="embeddedInnerWrapper">
<iframe allowfullscreen="true" allowscriptaccess="always" frameborder="0" height="349" scrolling="no" src="//www.youtube.com/embed/u6XAPnuFjJc?wmode=transparent&jqoemcache=eE9xf" width="425"></iframe>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-12">
Testing ratio AND left/right/center align:<br />
<div class="box1text">
<div class="embeddedContent">
<div class="embeddedInnerWrapper">
<iframe allowfullscreen="true" allowscriptaccess="always" frameborder="0" height="349" scrolling="no" src="//www.youtube.com/embed/u6XAPnuFjJc?wmode=transparent&jqoemcache=eE9xf" width="425"></iframe>
</div>
</div>
</div>
</div>
</div>
</div>
থেকে মন্তব্য উত্তর দেওয়ার জন্য weotch যে টিমোথি রায়ান ছুতার এর উত্তরের জন্য অ্যাকাউন্ট নেই coverগুলি পটভূমি কেন্দ্র করে ', আমি এই দ্রুত সিএসএস ফিক্স অফার:
সিএসএস:
margin-left: 50%;
transform: translateX(-50%);
এই দুটি লাইন যুক্ত করা যে কোনও উপাদানকে কেন্দ্র করবে। আরও ভাল, যে সমস্ত ব্রাউজারগুলি এইচটিএমএল 5 ভিডিও পরিচালনা করতে পারে তারা CSS3 রূপান্তরকে সমর্থন করে, তাই এটি সর্বদা কার্যকর হবে।
সম্পূর্ণ সিএসএস এর মতো দেখাচ্ছে।
#video-background {
position: absolute;
bottom: 0px;
right: 0px;
min-width: 100%;
min-height: 100%;
width: auto;
height: auto;
z-index: -1000;
overflow: hidden;
margin-left: 50%;
transform: translateX(-50%);
}
আমি টিমোথির উত্তরে সরাসরি মন্তব্য করতাম, তবে তা করার মতো যথেষ্ট খ্যাতি আমার নেই।
বন্ধুরা আমার আরও ভাল সমাধান এটির সংক্ষিপ্ত এবং আমার সাথে পুরোপুরি কার্যকর। আমি ভিডিওতে এটি ব্যবহার করেছি। এবং এটি পুরোপুরি CSS এর কভার বিকল্পটি অনুকরণ করে।
জাভাস্ক্রিপ্ট
$(window).resize(function(){
//use the aspect ration of your video or image instead 16/9
if($(window).width()/$(window).height()>16/9){
$("video").css("width","100%");
$("video").css("height","auto");
}
else{
$("video").css("width","auto");
$("video").css("height","100%");
}
});
আপনি যদি ফ্লিপ করেন, অন্যথায় আপনি এটি পেয়ে যাবেন।
এবং এখানে সিএসএস। (আপনি যদি কেন্দ্রের অবস্থান না চান তবে আপনাকে এটি ব্যবহার করার দরকার নেই, পিতামাতার ডিভটি অবশ্যই " অবস্থান: আপেক্ষিক " হতে হবে)
সিএসএস
video {
position: absolute;
-webkit-transform: translateX(-50%) translateY(-50%);
transform: translateX(-50%) translateY(-50%);
top: 50%;
left: 50%;}
আমি কেবল এটি সমাধান করেছি এবং ভাগ করে নিতে চাই। এটি বুটস্ট্র্যাপ ৪ এর সাথে কাজ করে It এটির সাথে কাজ করে imgতবে আমি এটি দিয়ে পরীক্ষা করিনি video। এইচএএমএল এবং এসসিএসএস এখানে রয়েছে
HAML
.container
.detail-img.d-flex.align-items-center
%img{src: 'http://placehold.it/1000x700'}
SCSS
.detail-img { // simulate background: center/cover
max-height: 400px;
overflow: hidden;
img {
width: 100%;
}
}
/* simulate background: center/cover */
.center-cover {
max-height: 400px;
overflow: hidden;
}
.center-cover img {
width: 100%;
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet"/>
<div class="container">
<div class="center-cover d-flex align-items-center">
<img src="http://placehold.it/1000x700">
</div>
</div>
পুরানো প্রশ্ন, তবে যদি কেউ এটি দেখে তবে আমার মতে সেরা উত্তরটি হ'ল ভিডিওটি একটি অ্যানিমেটেড জিআইএফতে রূপান্তর করা। এটি আপনাকে আরও অনেক নিয়ন্ত্রণ দেয় এবং আপনি কেবল এটি একটি চিত্রের মতো আচরণ করতে পারেন। এটি মোবাইলে কাজ করার একমাত্র উপায়, যেহেতু আপনি ভিডিওগুলি অটোপ্লে করতে পারবেন না। আমি জানি যে প্রশ্নটি এটি একটি <img>ট্যাগে করতে জিজ্ঞাসা করছে , তবে আমি সত্যিই একটি ব্যবহার <div>এবং করার ক্ষয়ক্ষতি দেখতে পাচ্ছি নাbackground-size: cover
.gifবারটি আকারে অনেক বড় হয়, আবার অস্পষ্টও হয়। আমি এই উত্তরটি লেখার পর থেকে আমার দৃষ্টিভঙ্গি পরিবর্তন হয়েছে। আপনি উভয়ের সেরাকে একত্রিত করতে পারবেন না এটি লজ্জাজনক।