সাফারির জন্য কি সিএসএস হ্যাক কেবল ক্রোম নয়?


182

আমি শুধু সাফারি নট ক্রোমের জন্য সিএসএস হ্যাক সন্ধান করার চেষ্টা করছি, আমি জানি এটি উভয় ওয়েবকিট ব্রাউজার তবে ক্রোম এবং সাফারিতে ডিভ অ্যালাইনমেন্টের সাথে আমার সমস্যা হচ্ছে, প্রতিটি আলাদা আলাদাভাবে প্রদর্শিত হয়।

আমি এটি ব্যবহার করার চেষ্টা করছি কিন্তু এটি ক্রোমকেও প্রভাবিত করে,

@media screen and (-webkit-min-device-pixel-ratio:0) { 
  #safari { display: block; } 
} 

কেউ কি অন্য যে কেউ কেবল সাফারি প্রয়োগ করবেন দয়া করে জানেন?


সিএসএস ব্যবহার করছেন না, আপনাকে জাভাস্ক্রিপ্ট ব্যবহার করতে হবে। stackoverflow.com/questions/5899783/detect-safari- using
খ্রিস্টান

একটি ভঙ্গুর এবং হ্যাকি সমাধানের চেয়ে আমি আসল সমস্যাটিতে আরও আগ্রহী। এটি (এখনও) কোথাও উপলব্ধ?
মাটিজস

যারা পোস্ট করছেন তাদের জন্য 'কাজ করে না' - দয়া করে বুঝতে পারেন যে আপনি যে সাফারিটি পরীক্ষা করছেন সেটির সংস্করণটি আপনার জানা উচিত। প্রতিটি সংস্করণের জন্য কোনও 'ক্যাচ-অল' সাফারি সমাধান নেই। আপনার পোস্টিংয়ের সাথে আপনাকে সেই তথ্য সরবরাহ করতে হবে বা সমাধান খোঁজার ক্ষেত্রে কেউ আপনাকে সহায়তা করতে পারে না।
জেফ ক্লেটন

সাফারির বিভিন্ন সংস্করণের বিভিন্ন চাহিদা রয়েছে - লাইভ উদাহরণগুলির জন্য এখানে চেক করুন: ব্রাউজারস্ট্রেঞ্জনেস.বিটবুকিট.আইও / সিএসএস_হ্যাকস এইচটিএমএল#safari [বা মিরর] ব্রাউজার
জেফ ক্লেটন

উত্তর:


356
  • ক্যাটালিনা ও সাফারি ১৩ (২০২০ এর প্রথম দিকে আপডেটের জন্য আপডেট) *

দ্রষ্টব্য: ফিল্টার এবং সংকলক (যেমন SASS ইঞ্জিন) স্ট্যান্ডার্ড 'ক্রস-ব্রাউজার' কোডের প্রত্যাশা করে - সিএসএস হ্যাকগুলি নয় যার অর্থ তারা হ্যাকগুলি পুনর্লিখন, ধ্বংস বা মুছে ফেলবে কারণ হ্যাকগুলি এটি করে না। এর বেশিরভাগটি হ'ল মানহীন কোড যা কেবলমাত্র একক ব্রাউজার সংস্করণগুলিকে টার্গেট করার জন্য শ্রমসাধ্যভাবে তৈরি করা হয়েছিল এবং সেগুলি পরিবর্তিত হলে কাজ করতে পারে না। আপনি যদি এটির সাথে এটি ব্যবহার করতে চান তবে আপনার নির্বাচিত সিএসএস হ্যাকটি কোনও ফিল্টার বা সংকলক পরে লোড করতে হবে । এটি একটি প্রদত্ত বলে মনে হতে পারে তবে এমন অনেক লোকের মধ্যে বিভ্রান্তি সৃষ্টি হয়েছে যারা বুঝতে পারেন না যে তারা এই জাতীয় সফটওয়্যারটির মাধ্যমে এটি একটি হ্যাককে পূর্বাবস্থায় আনছেন যা এই উদ্দেশ্যে তৈরি করা হয়নি।

সাফারি 6.1 সংস্করণ থেকে পরিবর্তিত হয়েছে, যেমনটি অনেকে লক্ষ্য করেছেন।

দয়া করে নোট করুন: আপনি যদি আইওএসে ক্রোম [এবং এখন ফায়ারফক্স] ব্যবহার করছেন (কমপক্ষে আইওএস সংস্করণ .1.১ এবং আরও নতুন সংস্করণে) এবং আপনি অবাক হন কেন কোনও হ্যাক সাফারি থেকে ক্রোমকে আলাদা করে না বলে মনে হয়, কারণ এটি ক্রোমের আইওএস সংস্করণ Chrome সাফারি ইঞ্জিন ব্যবহার করছে। এটি সাফারি হ্যাক ব্যবহার করে ক্রোমগুলি নয়। এটি সম্পর্কে এখানে আরও: https://allthingsd.com/20120628/googles-chrome-for-ios-is-more- Like-a-chrome-plated-apple/ আইওএসের জন্য ফায়ারফক্স ফলের 2015 সালে প্রকাশিত হয়েছিল It এটির প্রতিক্রিয়াও সাফারি হ্যাকস, তবে ফায়ারফক্সের কোনওটিই আইওএস ক্রোমের মতো নয়।

এছাড়াও: আপনি যদি এক বা একাধিক হ্যাকের চেষ্টা করে থাকেন এবং সেগুলি কাজ করতে সমস্যা হয় তবে দয়া করে নমুনা কোড পোস্ট করুন (একটি পরীক্ষার পৃষ্ঠা আরও ভাল) - আপনি যে হ্যাকটি চেষ্টা করছেন এবং ব্রাউজারগুলি কী (সঠিক সংস্করণ!) আপনি আপনি যে ডিভাইসটি ব্যবহার করছেন সেগুলিও ব্যবহার করছে। এই অতিরিক্ত তথ্য ব্যতীত আমার বা এখানে অন্য কারও পক্ষে আপনাকে সহায়তা করা অসম্ভব।

প্রায়শই এটি একটি সাধারণ ফিক্স বা অনুপস্থিত অর্ধিকোলন। সিএসএস সহ এটি সাধারণত বা কোনও সমস্যা যা কোডটি স্টাইল শিটগুলিতে তালিকাভুক্ত করা হয় তা যদি কেবল সিএসএস ত্রুটি না হয়। পরীক্ষার সাইটে এখানে হ্যাক পরীক্ষা করুন। যদি এটি সেখানে কাজ করে তবে এর অর্থ হ্যাক সত্যিই আপনার সেটআপের জন্য কাজ করছে, তবে এটি সমাধান করার দরকার অন্য কিছু। এখানকার লোকেরা সত্যই সহায়তা করতে ভালোবাসে বা কমপক্ষে আপনাকে সঠিক দিকে নির্দেশ করবে।

পরীক্ষার সাইট:

https://browserstrangeness.bitbucket.io/css_hacks.html#safari

এবং মিরর!

https://browserstrangeness.github.io/css_hacks.html#safari

সাফারিটির আরও সাম্প্রতিক সংস্করণগুলির জন্য আপনাকে এখানে ব্যবহার করা হ্যাকস।

এটি এখনকার সাফারি সংস্করণগুলিকে অন্তর্ভুক্ত করার কারণে আপনার এটি প্রথমে চেষ্টা করা উচিত এবং এটি খাঁটি-সাফারি:

এটি এখনও সাফারি ১৩ (২০২০-এর শুরুর দিকে) সাথে সঠিকভাবে কাজ করে:

/* Safari 7.1+ */

_::-webkit-full-page-media, _:future, :root .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

6.1 বা তার বেশি সংস্করণগুলি কভার করার জন্য এই মুহূর্তে আপনাকে পরের জোড়া সিএসএস হ্যাক ব্যবহার করতে হবে। 10.1 এবং তার বেশিগুলি পরিচালনা করে এমন একটিতে 6.1-10.0 এর জন্য একটি।

তারপরে - সাফারি 10.1+ এর জন্য আমি যে কাজটি করেছি তা এখানে রয়েছে:

ডাবল মিডিয়া ক্যোয়ারী এখানে গুরুত্বপূর্ণ, এটি অপসারণ করবেন না।

/* Safari 10.1+ */

@media not all and (min-resolution:.001dpcm) { @media {

    .safari_only { 

        color:#0000FF; 
        background-color:#CCCCCC; 

    }
}}

যদি এসএসএসএস বা অন্য সরঞ্জাম সেটটিতে নেস্টেড মিডিয়া ক্যোয়ারিতে সমস্যা হয় তবে এটি ব্যবহার করে দেখুন:

/* Safari 10.1+ (alternate method) */

@media not all and (min-resolution:.001dpcm)
{ @supports (-webkit-appearance:none) {

    .safari_only { 

        color:#0000FF; 
        background-color:#CCCCCC; 

    }
}}

এই পরবর্তীটি 6.1-10.0 এর জন্য কাজ করে তবে 10.1 নয় (মার্চ 2017 এর শেষের দিকে আপডেট)

এই হ্যাকটি আমি একাধিক অন্যান্য হ্যাকের সংমিশ্রণ করে পরীক্ষার এবং পরীক্ষার বহু মাস ধরে তৈরি করেছি।

দ্রষ্টব্য: উপরের মত, ডাবল মিডিয়া ক্যোয়ারী কোনও দুর্ঘটনা নয় - এটি অনেকগুলি পুরানো ব্রাউজারগুলিকে নিয়ন্ত্রন করে যা মিডিয়া কোয়েরি নেস্টিং পরিচালনা করতে পারে না। - 'এবং এর একটির পরেও হারিয়ে যাওয়া জায়গাটিও গুরুত্বপূর্ণ। এটি সর্বোপরি, একটি হ্যাক ... এবং কেবলমাত্র 6.1 এবং এই সময়ে সমস্ত নতুন সাফারি সংস্করণে কাজ করে। নীচের মন্তব্যে তালিকাবদ্ধ হিসাবে সচেতন থাকুন, হ্যাকটি অ-মানক সিএসএস এবং ফিল্টারের পরে অবশ্যই প্রয়োগ করতে হবে। SASS ইঞ্জিনগুলির মতো ফিল্টারগুলি এটিকে পুনরায় লিখন / পূর্বাবস্থায় ফিরিয়ে আনবে বা পুরোপুরি সরিয়ে ফেলবে।

উপরে উল্লিখিত হিসাবে, দয়া করে আমার পরীক্ষার পৃষ্ঠাটি এটি হিসাবে চলছে (পরিবর্তন ছাড়াই!) দেখুন

এবং এখানে কোড:

/* Safari 6.1-10.0 (not 10.1) */

@media screen and (min-color-index:0) and(-webkit-min-device-pixel-ratio:0) 
{ @media {
    .safari_only { 

        color:#0000FF; 
        background-color:#CCCCCC; 

    }
}}

আরও 'সংস্করণ নির্দিষ্ট' সাফারি সিএসএসের জন্য, দয়া করে নীচে পড়া চালিয়ে যান।

/* Safari 11+ */

@media not all and (min-resolution:.001dpcm)
{ @supports (-webkit-appearance:none) and (stroke-color:transparent) {

    .safari_only { 

        color:#0000FF; 
        background-color:#CCCCCC; 

    }
}}

সাফারি ১১.০ এর জন্য একটি:

/* Safari 11.0 (not 11.1) */

html >> * .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

সাফারি 10.0 এর জন্য একটি:

/* Safari 10.0 (not 10.1) */

_::-webkit-:host:not(:root:root), .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

10.1 (কেবল) এর জন্য সামান্য পরিবর্তিত কাজগুলি:

/* Safari 10.1 */

@media not all and (min-resolution:.001dpcm)
{ @supports (-webkit-appearance:none) and (not (stroke-color:transparent)) {

    .safari_only { 

        color:#0000FF; 
        background-color:#CCCCCC; 

    }
}}

সাফারি 10.0 (নন-আইওএস ডিভাইস):

/* Safari 10.0 (not 10.1) but not on iOS */

_::-webkit-:-webkit-full-screen:host:not(:root:root), .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

সাফারি 9 সিএসএস হ্যাকস:

একটি সাধারণ সাফারি 9.0 এবং তার জন্য বৈশিষ্ট্য ক্যোয়ারী হ্যাক সমর্থন করে:

@supports (-webkit-hyphens:none)
{

  .safari_only {
    color:#0000FF; 
    background-color:#CCCCCC; 
  }

}

সাফারি 9.0 এবং তার জন্য একটি সাধারণ আন্ডারস্কোর হ্যাক:

_:not(a,b), .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

সাফারি 9.0 এবং তার জন্য আরও একটি:

/* Safari 9+ */

_:default:not(:root:root), .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

এবং অন্য একটি সমর্থন বৈশিষ্ট্য ক্যোয়ারী:

/* Safari 9+ */

@supports (-webkit-marquee-repetition:infinite) and (object-fit:fill) {

    .safari_only { 

        color:#0000FF; 
        background-color:#CCCCCC; 

    }
}

সাফারি 9.0-10.0 এর জন্য একটি:

/* Safari 9.0-10.0 (not 10.1) */

_::-webkit-:not(:root:root), .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

সাফারি 9 এ এখন বৈশিষ্ট্য সনাক্তকরণ অন্তর্ভুক্ত করা হয়েছে যাতে আমরা এখন এটি ব্যবহার করতে পারি ...

/* Safari 9 */

@supports (overflow:-webkit-marquee) and (justify-content:inherit) 
{

  .safari_only {
    color:#0000FF; 
    background-color:#CCCCCC; 
  }

}

এখন কেবলমাত্র iOS ডিভাইসগুলিকে লক্ষ্য করতে। উপরে উল্লিখিত হিসাবে, যেহেতু আইওএসের ক্রোমটি মূলত সাফারিতে রয়েছে, এটি অবশ্যই এটির জন্যও হিট।

/* Safari 9.0 (iOS Only) */

@supports (-webkit-text-size-adjust:none) and (not (-ms-ime-align:auto))
and (not (-moz-appearance:none))
{

  .safari_only {
    color:#0000FF; 
    background-color:#CCCCCC; 
  }

}

সাফারি 9.0+ এর জন্য একটি তবে আইওএস ডিভাইস নয়:

/* Safari 9+ (non-iOS) */

_:default:not(:root:root), .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

এবং সাফারি 9.0-10.0 এর জন্য একটি তবে আইওএস ডিভাইস নয়:

/* Safari 9.0-10.0 (not 10.1) (non-iOS) */

_:-webkit-full-screen:not(:root:root), .safari_only {

  color:#0000FF; 
  background-color:#CCCCCC; 

}

নীচে result.১-7.০ এবং separate.১+ পৃথক হ্যাকগুলি রয়েছে যার সঠিক ফলাফল পেতে আরও একাধিক হ্যাকের সংমিশ্রণ প্রয়োজন:

/* Safari 6.1-7.0 */

@media screen and (-webkit-min-device-pixel-ratio:0) and (min-color-index:0)
{  
   .safari_only {(;

      color:#0000FF; 
      background-color:#CCCCCC; 

    );}
}

যেহেতু আমি আইওএস ডিভাইসগুলি ব্লক করার উপায়টি নির্দেশ করেছি, তাই এখানে সাফারি 6.1+ হ্যাকের সংশোধিত সংস্করণটি হ'ল নন-আইওএস ডিভাইসগুলিকে লক্ষ্য করে:

/* Safari 6.1-10.0 (not 10.1) (non-iOS) */

@media screen and (min-color-index:0) and(-webkit-min-device-pixel-ratio:0) 
{ @media {
    _:-webkit-full-screen, .safari_only { 

        color:#0000FF; 
        background-color:#CCCCCC; 

    }
}}

সেগুলি ব্যবহার করতে:

<div class="safari_only">This text will be Blue in Safari</div>

সাধারণত [এই প্রশ্নের মতো] লোকেরা সাফারি হ্যাক সম্পর্কে জিজ্ঞাসা করার কারণটি এটি বেশিরভাগ ক্ষেত্রে গুগল ক্রোম থেকে আলাদা করার প্রসঙ্গে (আবার আইওএস নয়!) বিকল্পটি পোস্ট করা গুরুত্বপূর্ণ হতে পারে: কীভাবে সাফারি থেকে আলাদাভাবে ক্রোমকে লক্ষ্যবস্তু করা যায়, তাই এটি প্রয়োজন হলে এখানে এটি সরবরাহ করছি।

এখানে বেসিকগুলি আবার ক্রোমের প্রচুর নির্দিষ্ট সংস্করণের জন্য আমার পরীক্ষার পৃষ্ঠাটি দেখুন, তবে সাধারণভাবে ক্রমটি ক্রম করে। ক্রোমটি 45 সংস্করণ, দেব এবং ক্যানারি সংস্করণগুলি এখন 47 সংস্করণে রয়েছে version

আমার পুরানো মিডিয়া ক্যোয়ারী কম্বো আমি ব্রাউজারহ্যাকগুলিতে রেখেছি এখনও ক্রোম 29+ এর জন্য কাজ করে:

/* Chrome 29+ */

@media screen and (-webkit-min-device-pixel-ratio:0) and (min-resolution:.001dpcm)
{
    .chrome_only {

       color:#0000FF; 
       background-color:#CCCCCC; 

    }
}

একটি @ সমর্থিত বৈশিষ্ট্য ক্যোয়ারী ক্রোম 29+ এর জন্যও ভাল কাজ করে ... আমরা নীচে ক্রোম 28+ এর জন্য ব্যবহার করছি তার একটি পরিবর্তিত সংস্করণ। সাফারি 9, আগত ফায়ারফক্স ব্রাউজার এবং মাইক্রোসফ্ট এজ ব্রাউজারটি এটির সাথে নেওয়া হয়নি:

/* Chrome 29+ */

@supports (-webkit-appearance:none) and (not (overflow:-webkit-marquee))
and (not (-ms-ime-align:auto)) and (not (-moz-appearance:none))
{
    .chrome_only {

       color:#0000FF; 
       background-color:#CCCCCC; 

    }
}

পূর্বে, ক্রোম 28 এবং আরও নতুন লক্ষ্য করা সহজ ছিল। এটি অন্যটি সিএসএস কোডের একটি ব্লকের মধ্যে অন্তর্ভুক্ত দেখার পরে ব্রাউজারচ্যাকগুলিতে আমি প্রেরণ করেছি (এটি মূলত সিএসএস হ্যাক হিসাবে চিহ্নিত নয়) এবং বুঝতে পারে এটি কী করে, তাই আমরা আমাদের উদ্দেশ্যে প্রাসঙ্গিক অংশটি বের করেছি:

[দ্রষ্টব্য:] নীচের এই পুরানো পদ্ধতিটি এখন উপরের আপডেট ছাড়াই সাফারি 9 এবং মাইক্রোসফ্ট এজ এজ ব্রাউজারটিকে তুলে ধরে। ফায়ারফক্স এবং মাইক্রোসফ্ট এজের আসন্ন সংস্করণগুলি তাদের প্রোগ্রামিংয়ে একাধিক-ওয়েবেকিট-সিএসএস কোডগুলির জন্য সমর্থন যোগ করেছে এবং এজ এবং সাফারি 9 উভয়ই @ সমর্থনগুলি বৈশিষ্ট্য সনাক্তকরণের জন্য সমর্থন যোগ করেছে। ক্রোম এবং ফায়ারফক্স এর আগে @ সমর্থনগুলি অন্তর্ভুক্ত করেছিল।

/* Chrome 28+, Now Also Safari 9+, Firefox, and Microsoft Edge */

@supports (-webkit-appearance:none) 
{
    .chrome_and_safari {

       color:#0000FF; 
       background-color:#CCCCCC; 

    }
}

ক্রোম সংস্করণগুলির ব্লক 22-28 (যদি পুরানো সংস্করণগুলিকে সমর্থন করার প্রয়োজন হয়) তবে আমার উপরে পোস্ট করা আমার সাফারি কম্বো হ্যাকগুলিতে একটি মোচড় দিয়ে টার্গেট করা সম্ভব:

/* Chrome 22-28 */

@media screen and(-webkit-min-device-pixel-ratio:0)
{
    .chrome_only {-chrome-:only(;

       color:#0000FF; 
       background-color:#CCCCCC; 

    );}
}

NOTE: If you are new, change class name but leave this the same-> {-chrome-:only(;

উপরের সাফারি সিএসএস ফর্ম্যাটিং হ্যাকগুলির মতো এগুলি নীচে ব্যবহার করা যেতে পারে:

<div class="chrome_only">This text will be Blue in Chrome</div>

সুতরাং আপনাকে এই পোস্টে এটি অনুসন্ধান করতে হবে না, এখানে আবার আমার লাইভ পরীক্ষার পৃষ্ঠাটি রয়েছে:

https://browserstrangeness.bitbucket.io/css_hacks.html#safari

[বা আয়না]

https://browserstrangeness.github.io/css_hacks.html#safari

পরীক্ষামূলক পৃষ্ঠাটিতে আরও অনেকগুলি রয়েছে, বিশেষত সংস্করণ-ভিত্তিক আপনাকে ক্রোম এবং সাফারি এবং ফায়ারফক্স, মাইক্রোসফ্ট এজ এবং ইন্টারনেট এক্সপ্লোরার ওয়েব ব্রাউজারগুলির জন্য আরও হ্যাক করতে সহায়তা করে।

দ্রষ্টব্য: যদি কিছু আপনার পক্ষে কাজ করে না, তবে প্রথমে পরীক্ষার পৃষ্ঠাটি পরীক্ষা করে দেখুন, তবে উদাহরণ কোড এবং হ্যাক যাকে আপনি যে কাউকে সহায়তা করার চেষ্টা করছেন তা সরবরাহ করুন।


9
কেবলমাত্র বলতে চাই যে পরীক্ষার পৃষ্ঠাটি দুর্দান্ত। আমি এখন কোনও ডিভাইস নিয়ে সেই সাইটে ব্রাউজ করতে পারি এবং কোন সিএসএস বিধি প্রযোজ্য তা দেখতে পাচ্ছি!
duyn9uyen

1
এটি আইফোন বা আইপ্যাডের সাফারিতে প্রয়োগ হবে?
গ্রেগ রোজমেরিওয়েজিক

1
প্রকৃতপক্ষে, আমি ওপরের উদাহরণ এবং ((সম্পত্তি: মান;) এর সংমিশ্রণটি ব্যবহার করে নিজের প্রশ্নটি সমাধান করেছি; নীচে এবং এটি দুর্দান্ত কাজ!
mydoglixu

1
এই উত্তরের শীর্ষে সাফারি 6.1+ এর জন্য হ্যাক সাস সংকলকটিতে একটি ত্রুটি ফেলেছে। এটি সমাধান করার কোন উপায় আছে?
ব্ল্যাকবার্ড

2
@ ব্ল্যাকবার্ড দুঃখিত, তবে আপনি হ্যাকগুলি সংকলন বা ফিল্টার করতে পারবেন না, এটি তাদের ধ্বংস করে দেয়। সেগুলি যেমন হয় তেমন ব্যবহার করতে হবে। (সংকলনের পরে তাদের সম্পূর্ণ সিএসএস ফাইলে যুক্ত করুন)) তারা অ-মানক হওয়ার কারণে তারা কেন কাজ করে।
জেফ ক্লেটন

88

Chrome থেকে সাফারি 5+ ফিল্টার করার একটি উপায় রয়েছে:

@media screen and (-webkit-min-device-pixel-ratio:0) { 
    /* Safari and Chrome */
    .myClass {
     color:red;
    }

    /* Safari only override */
    ::i-block-chrome,.myClass {
     color:blue;
    }
}

3
jeffclayton.wordpress.com/2014/07/22/... - আমি অনেক কাজ করা হয়েছে (আমি পরীক্ষা ও browserhacks.com জন্য css হ্যাক তৈরি করুন) এখানে এবং পরীক্ষা পৃষ্ঠা: browserstrangeness.bitbucket.org/css_hacks.html#webkit
জেফ ক্লেটন

দ্রষ্টব্য: আইওএসে [আইওএস tested-তে পরীক্ষা করা হয়েছে], ক্রোম সংস্করণটি আসলে সাফারি ইঞ্জিন চালাচ্ছে, তাই আইপ্যাড বা আইফোনে আপনি সাফারি হ্যাকগুলি ব্যবহার করেন। অন্যান্য ডিভাইসের জন্য, তারা পৃথক।
জেফ ক্লেটন

সুতরাং, মূলত উত্তরের কোডটি সাফারি 5.0 এবং 6.0 এর জন্য কাজ করে 6.1+ নয়?
নিক কোট্রেল

একেবারে নির্ভুল হতে, :: আই-ব্লক-ক্রোম,। মাই ক্লাস ruct ruct কনস্ট্রাক্ট কেবল সাফারি 5.1-6.0 এর অনুমতি দেয়, তবে ক্রোম 10-24 (ক্রোমের পুরাতন সংস্করণটি আর ব্যবহার করা হয় নি তাই পুরোপুরি উল্লেখযোগ্য নয়) তবে নতুন কিছু নয় - সাফারি হ্যাকগুলি এর মতো কাজ করতে থাকে: একটি ব্যাচ হ্যান্ডেল করে 5.1-6.0, অন্যটি 6.1-7.0 হ্যান্ডেল করে এবং নতুনগুলি হ্যান্ডেলগুলি 7.1-8.0 করে। তারা পরবর্তী সংখ্যার সংস্করণে যাওয়ার সিদ্ধান্ত না নেওয়া পর্যন্ত তারা জিনিসগুলিকে অনেকগুলি আপডেট করবে বলে মনে হয় যা পূর্ববর্তী '.1' প্রকাশের খুব কাছাকাছি।
জেফ ক্লেটন

২০১৩ সালে এই উত্তর দেওয়ার সময়ে, সাফারি .1.১ সবেমাত্র প্রকাশ করা হয়েছিল, তাই ব্রাউজারটি পরিবর্তিত হয়েছে বলে পর্যাপ্ত লোকেরা দেখেনি যে এটি তখনকার সবচেয়ে সঠিক ছিল। আপনার যদি নতুনদের দরকার হয় তবে নীচে আমার উত্তরটি চেক করুন। এটি সরবরাহ করার সময় এটি একটি দুর্দান্ত উত্তর ছিল। সময় পরিবর্তিত হয় তাই আমি এইটির আপডেট হিসাবে আমার কাজ পোস্ট করেছি। 6.1-7.0 এবং 7.1-8.0 এগুলি তৈরি করতে আমার কয়েক মাস সময় লেগেছে। আমি আশা করি আপনি ফলাফল পছন্দ করবেন। সম্ভবত কোনও সংস্করণ 8.1 প্রকাশিত হয় যদি এটি প্যাটার্নটি অনুসরণ করে তবে এটির জন্য আলাদা হ্যাকও লাগবে। আবার কেবল সময়ই বলবে।
জেফ ক্লেটন

21

সরারি শুধু

.yourClass:not(:root:root){ 
    /* ^_^ */ 
}

8
কিছু ব্যাখ্যা যোগ যত্ন? আমি কি আক্ষরিকভাবে রুট টাইপ করব?
নুবতাকুলার

1
এটি সাফারি ৩. এক্স এর জন্য ঠিক সঠিক (এবং ক্রোম সংস্করণ ১.০ কেবলমাত্র কেউ এখন Chrome এর ব্যবহার না করে যেহেতু এটি এখন ৩০ এর দশকের ...)
জেফ ক্লেটন '

এটি এখন সাফারি 9.0 কেও লক্ষ্য করে, তাই সম্পূর্ণ পরিসংখ্যান আপডেট হয়েছে: / * ক্রোম 1.0, সাফারি 3. এক্স, সাফারি 9.0+ * /
জেফ ক্লেটন

4
:not(:root:root)নির্বাচক থেকে CSS সিলেক্টর 3 বৈশিষ্ট অনুযায়ী (যা অবৈধ :not()শুধুমাত্র একটি সহজ নির্বাচক, অর্থাত্ এক ধরনের নির্বাচক ধারণ করতে পারে বা এক আইডি বা এক বর্গ বা এক ছদ্ম-বর্গ), কিন্তু সম্পূর্ণরূপে বৈধ অনুযায়ী CSS সিলেক্টর 4 (যেখানে :not()তালিকা গ্রহণ করে নির্বাচকরা)। এটি সত্য যে বর্তমানে কেবল সাফারি সিএসএস নির্বাচকদের 4 সিনট্যাক্স বোঝে, তবে এই সমাধানটি ভবিষ্যতের প্রমাণ নয়।
ইলিয়া স্ট্রেলটসিন

2
খুব অল্প কিছু হ্যাক নেই (এবং অনেক আসল মান কোড সংস্করণ পরিবর্তনের কারণে নয়) ভবিষ্যতের প্রমাণ। সর্বোত্তম পরিকল্পনাটি হ'ল আপনি যদি সিএসএস হ্যাক ব্যবহার করতে চলেছেন তবে আরও অফিসিয়াল ক্রস ব্রাউজার আপডেট করার জন্য সময় ক্রয়ের জন্য কেবল এটি একটি অস্থায়ী ফিক্স হিসাবে ব্যবহার করুন।
জেফ ক্লেটন

14

এই হ্যাক 100% শুধুমাত্র সাফারি 5.1-6.0 এর জন্য কাজ করে। আমি সবেমাত্র এটি সফলতার সাথে পরীক্ষা করেছি।

@media only screen and (-webkit-min-device-pixel-ratio: 1) {
     ::i-block-chrome, .yourcssrule {
        your css property
    }
}

3
এই হ্যাকটি বিভিন্ন সংস্করণে ক্রোম এবং সাফারি উভয়েরই জন্য। এটি ক্রোমকে 10-24 (যা কেউ আর ব্যবহার করে না কেন সে কারণেই লোকেরা তালিকাবদ্ধ করে যে এটি ক্রমকে অবরুদ্ধ করেছে) এবং সাফারি কেবল 5.1-6.0 এ অনুমতি দেয়। এটি সাফারি 6.1 এবং আরও নতুনর জন্য কাজ করে না। তখন এর ধরণের আর কোনও হ্যাক ছিল না।
জেফ ক্লেটন

1
@ ভেরোনিকা-লট্টি, এটি আমার পক্ষেও কাজ করেছিল। তুমি আমার মাথা ব্যাথা থেকে মুক্তি দাও। আপনাকে ধন্যবাদ
অন্ধি ইরাওয়ান

লোক - দয়া করে সাবধান। এই মন্তব্যগুলি যা বর্ণনা করছে তা হ'ল এমন একটি পদ্ধতি যা গত বেশ কয়েক বছর ধরে সাফারি সংস্করণের জন্য কাজ করে না এবং কেবল পুরানো সংস্করণগুলিতে কাজ করে। এর প্রকৃত অর্থ হ'ল ইন্টারনেটে বেশিরভাগ লোকের ফলাফল আপনি সন্ধান করছেন না, তবে কেবলমাত্র পুরানো কম্পিউটারযুক্ত লোকেরা। এটি বর্তমান অপারেটিং সিস্টেমগুলির জন্য কাজ করে না। এই সময়ে বেশিরভাগ লোকের সংস্করণ 12 এবং উচ্চতর (6.0 এবং নিম্ন নয়, যা কেবল উইন্ডোজ এক্সপি যুগে বর্তমান ছিল current)
জেফ ক্লেটন

8

যারা সাফারি .0.০ বা তার জন্য নীচে হ্যাক বাস্তবায়ন করতে চান তবে above.১ বা তার বেশি নয় - ব্যবহার করুন:

.myclass { (;property: value;); }
.myclass { [;property: value;]; }

আমি সাফারি 7 এ চেষ্টা করেছিলাম এবং এটি কাজ করতে পারি না। আপনি কি কোনও সুযোগে একটি কাজের উদাহরণ প্রদান করতে পারেন?
রসালো

@ জুসি: ব্রাউজারহ্যাকস.কম এ এর ​​লাইভ টেস্ট রয়েছে - এগুলি সাফারি and এবং নিম্নে এবং এছাড়াও ক্রোম ২৮ এবং তার চেয়ে কম কাজ করে। (অন্য পোস্টিং আইওএসে যেমন উল্লেখ করা হয়েছে যে and এবং maybe সম্ভবত অন্যরাও ক্রোমের জন্য সাফারি ইঞ্জিন ব্যবহার করে, তাই আইপ্যাডগুলিতে ক্রোম এবং সাফারি দুটি সত্যই সাফারি)
জেফ ক্লেটন

আপনি এটি সাফারি .1.০ তে সাফারি .0.০ এ চেষ্টা করে দেখছেন। এটি .0.০ এবং তার আগে বৈধ, .1.১ এবং আরও নতুন নয়। যখন এই উত্তরটি পোস্ট করা হয়েছিল, 7.0 ছিল সাফারির সর্বশেষতম সংস্করণ তাই এটি তখন সত্য ছিল।
জেফ ক্লেটন

উইন্ডোজের জন্য সাফারি (সংস্করণ 5.1.7 (7534.57.2)) এর জন্য কাজ করে
jave.web

ম্যাকের জন্য সাফারিটির জন্য কাজ করে (সংস্করণ 6.0.2 (7536.26.17))
মের্লিন

6

(.MyClass) এ আপনার শ্রেণি প্রতিস্থাপন করুন

/ * কেবল সাফারি * / .মাই ক্লাস: নয় (: মূল: মূল) enter code here }}


এটি সাফারির জন্য খুব ভাল - এটির দ্বারা চিহ্নিত অন্যান্য ব্রাউজারটি হ'ল ক্রোম 1 (আর কেউ চোম 1 ব্যবহার করে না)
জেফ ক্লেটন

সর্বশেষ ম্যাকগুলি ব্যবহার করছেন না এমন লোকদের জন্য নির্ভুল স্পেস: ক্রোম 1, সাফারি 3. এক্স, সাফারি 9.0+ (সাফারি 4-8 নয়)
জেফ ক্লেটন

এটি সাফারি 7+ এর সর্বশেষতম সংস্করণে কাজ করে এবং আমি যতদূর বলতে পারি গ্রহণযোগ্য উত্তর হওয়া উচিত।
জেসন এনগেজ

বাহ ধন্যবাদ ধন্যবাদ পরিশেষে এই সাফারির জন্য অনেক ব্রাউজার হ্যাক চেষ্টা করার পরে আমার জন্য কাজ করেছে !!!
পরিকুইউন

4

যাইহোক, আপনার যে কোনও ছেলের জন্য যা কেবলমাত্র মোবাইলে সাফারি লক্ষ্য করা প্রয়োজন, কেবল এই হ্যাকটিতে একটি মিডিয়া ক্যোয়ারী যুক্ত করুন:

@media screen and (max-width: 767px) {
    _::-webkit-full-page-media, _:future, :root .safari_only {
        padding: 10px; //or any property you need
    }
}

আপনি যে উপাদানটিকে টার্গেট করতে চান তার সাথে .safari_only ক্লাস যুক্ত করতে ভুলবেন না , উদাহরণস্বরূপ:

<div class='safari_only'> This div will have a padding:10px in a mobile with Safari  </div>

4

আমি নিম্নলিখিত পদ্ধতিটি ব্যবহার করতে চাই:

var isSafari = /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor);
if (isSafari) { 
  $('head').append('<link rel="stylesheet" type="text/css" href="path/to/safari.css">') 
};

এই জাভাস্ক্রিপ্ট হ্যাক পদ্ধতির জন্য JQuery প্যাকেজ ইনস্টল করা প্রয়োজন।
জেফ ক্লেটন 21

এটি অত্যন্ত খারাপ অনুশীলন হিসাবে বিবেচিত হয়, ব্রাউজার স্নিফিং খুব ত্রুটি-প্রবণ এবং মিথ্যা ধনাত্মকতার স্তূপ বাড়ে। এটি করবেন না, এমনকি মিডিয়া-কোয়েরি স্নিফিংও খুব নোংরা তবে খুব ছোট পরিবর্তনের জন্য গ্রহণযোগ্য হতে পারে।
Wannes

3

কেবলমাত্র এই সাফারি-ফিল্টারটি ব্যবহার করার সময় আমি সাফারি (আইওএস এবং ম্যাক) লক্ষ্যবস্তু করতে পারতাম, তবে ক্রোম (এবং অন্যান্য ব্রাউজারগুলি) বাদ রাখি:

@supports (-webkit-backdrop-filter: blur(1px)) {
  .safari-only {
    background-color: rgb(76,80,84);
  }
}

2

পদক্ষেপ 1: https://modernizr.com/ ব্যবহার করুন

পদক্ষেপ 2: কেবলমাত্র সাফারি নির্বাচন করতে এইচটিএমএল শ্রেণি। অঞ্চলগুলি ব্যবহার করুন

a { color: blue; }
html.regions a { color: green; }

মডার্নিজার বর্তমান ব্রাউজারটি যা সমর্থন করে তার ভিত্তিতে ডিওমে এইচটিএমএল ক্লাস যুক্ত করবে। সাফারি http://caniuse.com/#feat=css-regions অঞ্চলগুলিকে সমর্থন করে যেখানে অন্যান্য ব্রাউজারগুলি (এখনও যাইহোক) না। আইই এর বিভিন্ন সংস্করণ নির্বাচন করার ক্ষেত্রেও এই পদ্ধতিটি খুব কার্যকর। বল আপনার সাথে হতে পারে।


1
আধুনিকীকরণ হ'ল ব্রাউজারগুলি সনাক্ত করার জন্য ওয়েবসাইটগুলিতে একটি দুর্দান্ত জাভাস্ক্রিপ্ট অ্যাডন, দুর্দান্ত সরঞ্জাম! - অন্যান্য ব্রাউজারগুলি অঞ্চল বৈশিষ্ট্য সমর্থন করার সিদ্ধান্ত না দেওয়া পর্যন্ত এই হ্যাকটি (অন্যদের মতো) কাজ করবে
জেফ ক্লেটন

1
সিএসএস অঞ্চলগুলি এখন আর সমর্থিত নয়।
লা থমোমাস

2
অঞ্চলগুলি আমাকে iOS এ সাফারি 6.1 থেকে 11 এবং 7.1 থেকে 11.2 লক্ষ্য করতে সক্ষম করে এবং এটি একা ইতিমধ্যে দুর্দান্ত।
lowtechsun

@ লোতেটসুন - এটিতে আপনার পরিসংখ্যান দুর্দান্ত পোস্ট করা, হ্যাকগুলি তারা কী ব্রাউজারগুলি লক্ষ্য করে তা কেবল জ্ঞানের হিসাবে ভাল।
জেফ ক্লেটন

2

হাই আমি এটি তৈরি করেছি এবং এটি আমার জন্য কাজ করেছে

@media(max-width: 1920px){
    @media not all and (min-resolution:.001dpcm) {

        .photo_row2 {
            margin-left: 5.5% !important;
        }
    }
}

@media(max-width: 1680px){
    @media not all and (min-resolution:.001dpcm) {

        .photo_row2 {
            margin-left: 15% !important;
        }

    }
}

@media(max-width: 1600px){
    @media not all and (min-resolution:.001dpcm) {

        .photo_row2 {
            margin-left: 18% !important;
        }

    }
}


@media (max-width: 1440px) {
@media not all and (min-resolution:.001dpcm) {

        .photo_row2 {
            margin-left: 24.5% !important;
        }

    }

}


@media (max-width: 1024px) {
@media not all and (min-resolution:.001dpcm) {
    @media {
        .photo_row2 {
            margin-left: -11% !important;
        }

    }

}

প্রতিক্রিয়াশীল দর্শন ব্যবহার করে ওয়েব সাইটগুলির জন্য একাধিক ডিভাইস সেটিংস সহ হ্যাকের এটি একটি দুর্দান্ত সেট।
জেফ ক্লেটন 21

2

দ্রষ্টব্য: আইওএস-কেবলমাত্র যদি যথেষ্ট হয় (আপনি যদি সাফারি ডেস্কটপ উত্সর্গ করতে ইচ্ছুক হন), তবে এটি কাজ করে:

    @supports (-webkit-overflow-scrolling: touch) {
    /* CSS specific to iOS devices */ 
    }

1

আপনি অন্যান্য ব্রাউজারগুলি থেকে সাফারি 6.1-7.0 নির্বাচন করতে একটি মিডিয়া-কোয়েরি হ্যাক ব্যবহার করতে পারেন।

@media \\0 screen {}

দাবি অস্বীকার: এই হ্যাকটি পুরানো ক্রোম সংস্করণগুলিকেও লক্ষ্য করে (জুলাই 2013 এর আগে)।


এটি নতুন সাফারিটিতে কাজ করে না, এইগুলির জন্য পরিসংখ্যানগুলি তবে সার্জিকাল: সাফারি 6.১-7.০, ক্রোম ২২-২৮ তাই এখনও কার্যকর।
জেফ ক্লেটন


0

শেষ পর্যন্ত আমি এটি অর্জন করতে কিছুটা জাভাস্ক্রিপ্ট ব্যবহার করেছি:

if (navigator.vendor.startsWith('Apple'))
    document.documentElement.classList.add('on-apple');

তারপরে আমার সিএসএসে অ্যাপল ব্রাউজার ইঞ্জিনকে টার্গেট করতে নির্বাচকটি হবেন:

.on-apple .my-class{
    ...
}

0

https://stackoverflow.com/a/17637937/3174065 এর উত্তর এখানে দেওয়া হয়েছে যদিও এই পদ্ধতিটি কিছু জেএস ব্যবহার করে না। যদি ব্যবহার করা হয় তবে ফুটারে জেএস লাগাতে ভুলবেন না, দেহটি পুরোপুরি লোড করতে হবে এটির জন্য যথাযথভাবে আগুন লাগাতে হবে, যখন মাথায় রাখলে এটি ত্রুটিযুক্ত হয় কারণ এটি শরীরে বোঝাই হওয়ার আগে আগুন ধরে যায়।

এটি তখন শরীরে একটি সাফারি ক্লাস যুক্ত করে তবে কেবল সাফারিতেই সিএসএস লক্ষ্য করে খুব সহজ করে তোলে।


-1

এটি সাফারিতে 100% কাজ করছে..আমি চেষ্টা করেছি

@media screen and (-webkit-min-device-pixel-ratio:0) 
{
::i-block-chrome, Class Name {your styles}
}

এটি সাফারির পুরানো সংস্করণগুলিতে কাজ করে, বর্তমানের নয় - .1.১ এবং আরও পুরানো।
জেফ ক্লেটন 21

-1

আমি পরীক্ষা করেছি এবং এটি আমার পক্ষে কাজ করেছে

@media only screen and (-webkit-min-device-pixel-ratio: 1) {
 ::i-block-chrome, .myClass {
    height: 1070px !important;
  }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.