চেকবাক্সগুলির মতো চিত্রগুলি ব্যবহার করুন


164

আমি একটি স্ট্যান্ডার্ড চেকবক্সের বিকল্প রাখতে চাই - মূলত আমি চিত্রগুলি ব্যবহার করতে চাই এবং ব্যবহারকারী যখন চিত্রটি ক্লিক করেন, তখন তা বিবর্ণ করুন এবং একটি টিক বাক্সটি আড়াল করুন।

সংক্ষেপে, আমি যখন কিছু নির্দিষ্ট মানদণ্ডের সাথে মিলিত চিত্রগুলিতে ক্লিক করতে পেল তখন আমি রিক্যাপ্টা 2 এর মতো কিছু করতে চাই। আপনি এখানে একটি রিক্যাপচা ডেমো দেখতে পারেন তবে চিত্রের নির্বাচনের বিপরীতে এটি কখনও কখনও পাঠ্য প্রশ্নগুলির সমাধান করতে পারে। সুতরাং এখানে একটি স্ক্রিনশট:

গুগল রিক্যাপচা স্ক্রিনশট

আপনি যখন কোনও একটি চিত্র ক্লিক করেন (এক্ষেত্রে স্টিকের ছবি রয়েছে), আপনি যে চিত্রটি ক্লিক করেন সেটি আকারে সঙ্কুচিত হয় এবং নীল রঙের টিকটি উপস্থিত হয়, এটি ইঙ্গিত করে যে আপনি এটি টিক করেছেন।

আসুন আমি এই সঠিক উদাহরণটি পুনরুত্পাদন করতে চাই বলুন।

আমি বুঝতে পারি যে আমার কাছে 9 টি লুকানো চেকবাক্স থাকতে পারে এবং কয়েকটি jQuery সংযুক্ত করা যায় যাতে আমি যখন ছবিটি ক্লিক করি তখন এটি লুকানো চেকবক্সটি নির্বাচন / নির্বাচন না করে নির্বাচন করে। তবে চিত্রটি সংকুচিত / টিকটিকে ওভারলেলে কী হবে?


2
আপনার দুটি অভিন্ন চিত্র থাকতে পারে: একটিতে টিক এবং অন্যটি টিক ছাড়াই। এবং ক্লিক ক্লিক করুন চিত্রগুলি
অ্যালেক্স

22
@ অ্যালেক্স এটি একটি বিশেষত নমনীয় সমাধান হবে।
সিগুজা

2
আপনি কি ক্লিকে এমন কোনও সিএসএস ক্লাস যুক্ত / মুছে ফেলার চেষ্টা করেছেন যা চিত্রের আকারকে ওভাররাইড করে এবং :beforeটিক চিত্রের জন্য কিছু জাদু করে ?
হেক্সাহোলিক

3
@ অ্যালেক্স "আনফ্লেক্সিবল" এই অর্থে যে কোনও কিছুর পরিবর্তনের জন্য আরও অনেক বেশি কাজ করা দরকার, যেমন সংগ্রহের ক্ষেত্রে নতুন ছবি যুক্ত করা বা "টিকড" আইকনটি পরিবর্তন করা, যখন প্রভাবটি যদি প্রোগ্রামক্রমে তৈরি করা হয় তবে এটি ঘটবে না রানটাইম।
সিগুজা

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

উত্তর:


308

খাঁটি অর্থপূর্ণ HTML / CSS সমাধান

এটি নিজেরাই প্রয়োগ করা সহজ, কোনও প্রাক-তৈরি সমাধানের প্রয়োজন নেই। সিএসএসের সাথে আপনাকে খুব সহজ মনে হয় না বলে এটি আপনাকে অনেক কিছু শেখাবে।

এটি আপনার করা দরকার:

আপনার চেকবক্সে আলাদা আলাদা idবৈশিষ্ট্য থাকা দরকার। এটি আপনাকে <label>লেবেলের for-ট্রিবিউট ব্যবহার করে এটিতে একটি সংযোগ করতে দেয় ।

উদাহরণ:

<input type="checkbox" id="myCheckbox1" />
<label for="myCheckbox1"><img src="http://someurl" /></label>

চেকবক্সে লেবেলটি সংযুক্ত করা একটি ব্রাউজারের আচরণকে ট্রিগার করবে: যখনই কেউ লেবেলে ক্লিক করেন (বা এর ভিতরে থাকা চিত্র), চেকবক্সটি টগল হবে।

এর পরে, আপনি display: none;এটির উদাহরণস্বরূপ আবেদন করে চেকবক্সটি আড়াল করেন ।

এখন যা করা বাকি তা হ'ল আপনার label::beforeসিউডো উপাদানটির জন্য আপনি যে স্টাইলটি চান সেটি সেট করা (যা ভিজ্যুয়াল চেকবক্স প্রতিস্থাপনের উপাদান হিসাবে ব্যবহৃত হবে):

label::before {
    background-image: url(../path/to/unchecked.png);
}

একটি চূড়ান্ত পদক্ষেপে, আপনি :checkedচেকবক্সটি চেক করা হলে চিত্রটি পরিবর্তন করতে CSS এর সিউডো সিলেক্টরটি ব্যবহার করেন :

:checked + label::before {
    background-image: url(../path/to/checked.png);
}

+( সংলগ্ন সহোদর নির্বাচক ) নিশ্চিত করুন যে আপনি শুধুমাত্র লেবেল পরিবর্তন যা সরাসরি মার্কআপ লুকানো চেকবক্সটি অনুসরণ করে তোলে।

উভয় চিত্রকে একটি স্প্রিটম্যাপে রেখে এবং কেবল চিত্রটি অদলবদলের background-positionপরিবর্তে পরিবর্তন প্রয়োগ করে আপনি এটি অপ্টিমাইজ করতে পারেন ।

অবশ্যই আপনাকে সঠিকভাবে লেবেলটি অবস্থান করতে হবে এবং প্রয়োগ করতে হবে display: block;এবং সঠিক widthএবং সেট করতে হবে height

সম্পাদনা:

কোডেকেন উদাহরণ এবং স্নিপেট, যা আমি এই নির্দেশাবলীর পরে তৈরি করেছি, একই কৌশলটি ব্যবহার করি, তবে চেকবাক্সগুলির জন্য চিত্রগুলি ব্যবহার না করে, চেকবক্স প্রতিস্থাপনগুলি সিএসএসের সাথে খাঁটিভাবে সম্পন্ন হয়::before , একবার লেবেলে একটি তৈরি করে যা একবার যাচাই করা হয়েছিল,content: "✓"; । কিছু বৃত্তাকার সীমানা এবং মিষ্টি রূপান্তর যুক্ত করুন এবং ফলাফলটি সত্যিই পছন্দনীয়!

এখানে এমন একটি কার্যকারী কোডেপেন রয়েছে যা কৌশলটি প্রদর্শন করে এবং চেকবাক্সের জন্য চিত্রগুলির প্রয়োজন হয় না:

http://codepen.io/anon/pen/wadwpx

এখানে একটি স্নিপেটে একই কোড:

ul {
  list-style-type: none;
}

li {
  display: inline-block;
}

input[type="checkbox"][id^="cb"] {
  display: none;
}

label {
  border: 1px solid #fff;
  padding: 10px;
  display: block;
  position: relative;
  margin: 10px;
  cursor: pointer;
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

label::before {
  background-color: white;
  color: white;
  content: " ";
  display: block;
  border-radius: 50%;
  border: 1px solid grey;
  position: absolute;
  top: -5px;
  left: -5px;
  width: 25px;
  height: 25px;
  text-align: center;
  line-height: 28px;
  transition-duration: 0.4s;
  transform: scale(0);
}

label img {
  height: 100px;
  width: 100px;
  transition-duration: 0.2s;
  transform-origin: 50% 50%;
}

:checked+label {
  border-color: #ddd;
}

:checked+label::before {
  content: "✓";
  background-color: grey;
  transform: scale(1);
}

:checked+label img {
  transform: scale(0.9);
  box-shadow: 0 0 5px #333;
  z-index: -1;
}
<ul>
  <li><input type="checkbox" id="cb1" />
    <label for="cb1"><img src="https://picsum.photos/seed/1/100" /></label>
  </li>
  <li><input type="checkbox" id="cb2" />
    <label for="cb2"><img src="https://picsum.photos/seed/2/100" /></label>
  </li>
  <li><input type="checkbox" id="cb3" />
    <label for="cb3"><img src="https://picsum.photos/seed/3/100" /></label>
  </li>
  <li><input type="checkbox" id="cb4" />
    <label for="cb4"><img src="https://picsum.photos/seed/4/100" /></label>
  </li>
</ul>


32
আমি খুশি তুমি এটা পছন্দ করেছো! সিএসএসের সাথে আরও বেশি বিড়বিড় করা শুরু করুন, এটি প্রচুর মজাদার এবং সিএসএস আপনি সম্ভবত প্রত্যাশার চেয়ে অনেক বেশি করতে পারেন (উল্লম্ব কেন্দ্রীকরণ ব্যতীত, এটি কেবল খুব কঠিন;))।
connexo

1
হ্যাঁ, এবং এটির কাজ করার উপায়টি আপনাকে ভবিষ্যতে ভাবতে বাধ্য করবে, প্রতিবার ক্লিকে আপনি কোনও ডোম ক্রিয়া চান। আর তুমি ভেবেছিলাম তুমি কেবল প্রতিক্রিয়া পারেন :hover:)
connexo


6
এই খুব সুন্দর! আমি একটি ছোট সমস্যা লক্ষ্য করেছি যখন আপনি একই লেবেলে দুবার ক্লিক করেন, এটি চিত্রটি নির্বাচন করে। এটি এটিকে ঠিক করে দেয়: codepen.io/anon/pen/jPmNjg
আয়েশ কে

1
টিক এসভিজি হিসাবে আরও ভাল লাগত। সিএসএস সামগ্রী আপনাকে কিছু ভয়ানক সিস্টেম ফন্টের করুণায় ফেলেছে।
অ্যাডরিয়া

31

খাঁটি সিএসএস সলিউশন

তিনটি ঝরঝরে ডিভাইস আহ্বান করা হয়েছে:

  1. :checkedনির্বাচক
  2. ::beforeসিউডো-নির্বাচক
  3. সিএসএস contentসম্পত্তি।

label:before {
  content: url("https://cdn1.iconfinder.com/data/icons/windows8_icons_iconpharm/26/unchecked_checkbox.png");
  position: absolute;
  z-index: 100;
}
:checked+label:before {
  content: url("https://cdn1.iconfinder.com/data/icons/windows8_icons_iconpharm/26/checked_checkbox.png");
}
input[type=checkbox] {
  display: none;
}
/*pure cosmetics:*/
img {
  width: 150px;
  height: 150px;
}
label {
  margin: 10px;
}
<input type="checkbox" id="myCheckbox1" />
<label for="myCheckbox1">
  <img src="https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcR0LkgDZRDTgnDrzhnXGDFRSItAzGCBEWEnkLMdnA_zkIH5Zg6oag">
</label>
<input type="checkbox" id="myCheckbox2" />
<label for="myCheckbox2">
  <img src="https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcRhJjGB3mQxjhI5lfS9SwXou06-2qT_0MjNAr0atu75trXIaR2d">
</label>
<input type="checkbox" id="myCheckbox3" />
<label for="myCheckbox3">
  <img src="https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQuwWbUXC-lgzQHp-j1iw56PIgl_2eALrEENUP-ld72gq3s8cVo">
</label>


এই চেকবক্সগুলিতে কীভাবে রেডিও বোতামের আচরণ যুক্ত করা সম্ভব? মানে আপনি যখন কোনও ছবিতে ক্লিক করেন ইতিমধ্যে নির্বাচিত চিত্রটি অনির্বাচিত হয়ে যায়।
Libertad

যিনি নিজেকে @ লাইবার্টাডের মতো একই প্রশ্ন জিজ্ঞাসা করছেন কেবলমাত্র রেডিওতে ইনপুট টাইপ পরিবর্তন করুন এবং তাদের সকলকে একই নাম "বৈশিষ্ট্য" দিন <input type="radio" name="myRadio" id="myRadio1" />এটিও বুলেটটি আড়াল করতে আপনার সিএসএস পরিবর্তন করে:input[type=radio]{display: none;}
লু

8

: এই jQuery এর প্লাগইন দেখুন imgCheckbox (চালু npm এবং আবাস )

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

Barebones সমাধান:

খুব সাধারণ এইচটিএমএল (চেকবক্স এবং লেবেল ইত্যাদির সাথে কোনও জগাখিচুড়ি) নেই:

<img class="checkable" src="http://lorempixel.com/100/100" />

আপনি ইভেন্টটিতে একটি বা ক্লাস চালু / বন্ধ করতে jQuery এর টগলক্লাস ব্যবহার করতে পারেন :selectedcheckedclick

$("img.checkable").click(function () {
    $(this).toggleClass("checked");
});

চেক করা আইটেমগুলি সাথে আনা হয়

$(".checked")

প্লাস শীতলতা:

আপনি এর ভিত্তিতে চিত্রগুলি স্টাইল করতে পারেন তবে একটি বড় সমস্যা হ'ল অন্যান্য ডোম উপাদান ছাড়াই আপনি ব্যবহার করতে পারবেন না ::beforeএবং ::afterচেক চিহ্নের মতো স্টাফ যুক্ত করতে পারেন। সমাধানটি হ'ল অন্য চিত্রগুলির সাথে আপনার চিত্রগুলি মোড়ানো (এবং এটি ক্লিক করে শ্রোতাদের মোড়ানো উপাদানটির সাথে সংযুক্ত করাও বোধগম্য)।

$("img.checkable").wrap("<span class='fancychecks'>")

এটি আপনার এইচটিএমএলকে সত্যিই পরিষ্কার এবং আপনার জেএস অবিশ্বাস্যভাবে পাঠযোগ্য leaves স্নিপেটটি একবার দেখুন ...

ImgCheckbox jQuery প্লাগইন ব্যবহার :

উপরের সমাধানটি দ্বারা অনুপ্রাণিত হয়ে, আমি একটি প্লাগইন তৈরি করেছি যা সহজেই ব্যবহার করা যেতে পারে:

$("img").imgCheckbox();
  • আপনার ফর্মটিতে চেক করা চিত্রগুলির জন্য ডেটা ইনজেক্ট করে
  • কাস্টম চেক চিহ্ন সমর্থন করে
  • কাস্টমাইজড সিএসএস সমর্থন করে
  • পূর্বনির্ধারিত উপাদানগুলিকে সমর্থন করে
  • চিত্রগুলিতে টগলিংয়ের পরিবর্তে রেডিও গ্রুপগুলি সমর্থন করে
  • ইভেন্ট কলব্যাকস রয়েছে
  • বোধগম্য ডিফল্ট
  • লাইটওয়েট এবং ব্যবহার করা সহজ সুপার

এটি কর্মে দেখুন (এবং উত্স দেখুন )


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

এটি সত্য, ফর্ম জমা দেওয়ার হাইজ্যাক করতে এবং ফর্মটিতে ডেটা ইনজেক্ট করতে - এটি প্লাগিনের জন্য আমার টোডো তালিকায় রয়েছে। তবে আপনি ঠিক বলেছেন, চেকবাক্সগুলি ফর্মগুলির জন্য অর্থপূর্ণ
jcuenod

আমি আপনার প্লাগইনটি ব্যবহার করার চেষ্টা করেছি, তবে যদি আমি আরম্ভের পরে আরও চিত্র যুক্ত করি তবে মনে হয় আগের চিত্রটি ধ্বংস করার উপায় নেই যাতে নতুন চিত্রগুলি অন্তর্ভুক্ত করা যায়
ইয়ান কিম

@ ইয়ানকিমের আকর্ষণীয় ব্যবহারের ক্ষেত্রে, আপনি গিথুব সম্পর্কিত কোনও ইস্যুতে যা করার চেষ্টা করছেন সে সম্পর্কে আরও ব্যাখ্যা করতে পারেন? github.com/jcuenod/imgCheckbox
jcuenod

এটি একটি দুর্দান্ত প্লাগইন! দয়া করে একটি ওয়েবজার প্রকাশ করুন =)
নেক্সা

6

আমি একটি অতিরিক্ত ডিভি যুক্ত করব position: relative;এবং class="checked"যা চিত্রের মতো একই প্রস্থ / উচ্চতা এবং left: 0; top: 0;আইকনটি ধারণ করার চেয়ে অবস্থানের তুলনায় । এটি দিয়ে শুরু হয় display: none;

এখন আপনি শুনুন শুনতে পারেন click:

$( '.captcha_images' ).click( function() {
    $(this + '.checked').css( 'display', 'block' );
    $(this).animate( { width: '70%', height: '70%' } );
});

এইভাবে আপনি আইকনটি পেতে এবং চিত্রটিকে আরও ছোট আকারে আকার দিতে পারেন।

বিজ্ঞপ্তি: সবেমাত্র আপনাকে আমার চিন্তার পিছনে "যুক্তি" দেখাতে চেয়েছিলেন, এই উদাহরণটি কার্যকর হতে পারে না বা এতে কিছু বাগ রয়েছে।


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

2
হ্যাঁ আপনি ঠিক. প্রথমে আমি আপনার প্রথম উত্তরটি চিহ্নিত করতে এবং এটির উন্নতি করতে চেয়েছিলাম (সম্পাদনার আগে), কারণ আমি নো-জেএস এবং দুর্দান্ত সিমেটিক উপায় পছন্দ করি, তবে আমি পড়ার চেয়ে ওপি jQuery তে কিছু চায় তাই আমি আমার উত্তরটি পরিবর্তন করেছি। আমার মনে আছে আমি কোথায় ডাউনটা পেয়েছি, কারণ ওপি একটি "আরও ভাল" বা "সঠিক উপায়ে" সমাধান চাইছিল না, তবে তিনি ঠিক কী লিখেছিলেন way হতে পারে আমি কেবল ওভারড্রেড কিছু পেয়েছি বা অবহেলিত হয়নি বা এটি ওপির উপর নির্ভর করে?
ক্যাগাটে উলুবে

2

আমি লক্ষ্য করেছি যে অন্য উত্তরগুলি হয় হয় না <label>(কেন না?), বা ম্যাচিং forএবং idগুণাবলী প্রয়োজন। এর অর্থ যদি আপনার সংঘবদ্ধ আইডি থাকে তবে আপনার কোডটি কার্যকর হবে না এবং আপনাকে অবশ্যই প্রতিবার অনন্য আইডি তৈরি করতে হবে।

এছাড়াও, আপনি বা এর inputসাথে লুকিয়ে রাখলে , ব্রাউজারটি এতে ফোকাস করবে না।display:nonevisibility:hidden

একটি চেকবক্স এবং এর পাঠ্য (বা এই ক্ষেত্রে চিত্রটি) একটি লেবেলে আবৃত হতে পারে:

.fancy-checkbox-label > input[type=checkbox] {
  position: absolute;
  opacity: 0;
  cursor: inherit;
}
.fancy-checkbox-label {
  font-weight: normal;
  cursor: pointer;
}
.fancy-checkbox:before {
  font-family: FontAwesome;
  content: "\f00c";
  background: #fff;
  color: transparent;
  border: 3px solid #ddd;
  border-radius: 3px;
  z-index: 1;
}
.fancy-checkbox-label:hover > .fancy-checkbox:before,
input:focus + .fancy-checkbox:before {
  border-color: #bdbdff;
}
.fancy-checkbox-label:hover > input:not(:checked) + .fancy-checkbox:before {
  color: #eee;
}
input:checked + .fancy-checkbox:before {
  color: #fff;
  background: #bdbdff;
  border-color: #bdbdff;
}
.fancy-checkbox-img:before {
  position: absolute;
  margin: 3px;
  line-height: normal;
}
input:checked + .fancy-checkbox-img + img {
  transform: scale(0.9);
  box-shadow: 0 0 5px #bdbdff;
}
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-T8Gy5hrqNKT+hzMclPo118YTQO6cYprQmhrYwIiQ/3axmI1hQomh7Ud2hPOy8SP1" crossorigin="anonymous">
<p>
  <label class="fancy-checkbox-label">
    <input type="checkbox">
    <span class="fancy-checkbox"></span>
    A normal checkbox
  </label>
</p>
<p>
  <label class="fancy-checkbox-label">
    <input type="checkbox">
    <span class="fancy-checkbox fancy-checkbox-img"></span>
    <img src="http://placehold.it/150x150">
  </label>
</p>


1

এখানে একটি চেকবক্সের মতো চিত্র নির্বাচন করার একটি দ্রুত উদাহরণ

নকআউট.জেএস ব্যবহার করে আপডেট করা উদাহরণ:

var imageModel = function() {
    this.chk = ko.observableArray();
};
ko.applyBindings(new imageModel());
    input[type=checkbox] {
        display:none;
      }
 
  input[type=checkbox] + label
   {
       display:inline-block;
        width:150px;
        height:150px;
        background:#FBDFDA;
        border:none;
   }
   
   input[type=checkbox]:checked + label
    {
        background:#CFCFCF;
        border:none;
        position:relative;
        width:100px;
        height:100px;
        padding: 20px;
    }

   input[type=checkbox]:checked + label:after
    {
        content: '\2713';
        position:absolute;
        top:-10px;
        right:-10px;
        border-radius: 10px;
        width: 25px;
        height: 25px;
        border-color: white;
        background-color: blue;
    }
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.0.0/knockout-min.js"></script>
<input type='checkbox' name='image1' value='image1' id="image1" data-bind="checked: chk"/><label for="image1"></label><label for="image1"><img class='testbtn'/></label>

<div data-bind="html: chk"></div>


1
আমি আপনার পদ্ধতির পছন্দ করার সময়, বেশিরভাগের পক্ষে এটি আপনার পক্ষে উদাহরণস্বরূপ আপনি নকআউট.জেএস ব্যবহার করছেন তা সহায়ক হবে।
connexo

@ কনেক্সেক্স চিয়ার্স, নকআউট.জেএস ব্যবহার করে উদাহরণ বলতে সবেমাত্র আপডেট হয়েছে
ইয়াবিবিকে

0

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

// Change '2' to your form ID
add_filter( 'gform_pre_render_2', 'populate_checkbox' );
add_filter( 'gform_pre_validation_2', 'populate_checkbox' );
add_filter( 'gform_pre_submission_filter_2', 'populate_checkbox' );
add_filter( 'gform_admin_pre_render_2', 'populate_checkbox' );

function populate_checkbox( $form ) {

    foreach( $form['fields'] as &$field )  {

        // Change '41' to your checkbox field ID
        $field_id = 41;
        if ( $field->id != $field_id ) {
            continue;
        }

        // Adjust $args for your post type
        $args = array(
                'post_type' => 'pet',
                'post_status' => 'publish',
                'posts_per_page' => -1,
                'tax_query' => array(
                        array(
                                'taxonomy' => 'pet_category',
                                'field' => 'slug',
                                'terms' => 'cat'
                        )
                )
        );

        $posts = get_posts( $args );

        $input_id = 1;

        foreach( $posts as $post ) {

            $feat_image_url = wp_get_attachment_image( get_post_thumbnail_id( $post->ID ), 'thumbnail' );
            $feat_image_url .= '<br />' . $post->post_title;

            if ( $input_id % 10 == 0 ) {
                $input_id++;
            }

            $choices[] = array( 'text' => $feat_image_url, 'value' => $post->post_title );
            $inputs[] = array( 'label' => $post->post_title, 'id' => "{$field_id}.{$input_id}" );

            $input_id++;
        }

        $field->choices = $choices;
        $field->inputs = $inputs;

    }

    return $form;
}

এবং সিএসএস:

.gform_wrapper .gfield_checkbox li[class^="gchoice_2_41_"] {
    display: inline-block;
}

.gform_wrapper .gfield_checkbox li input[type="checkbox"][id^="choice_2_41_"] {
    display: none;
}


.gform_wrapper .gfield_checkbox li label[id^="label_2_41_"] {
    border: 1px solid #fff;
    padding: 10px;
    display: block;
    position: relative;
    margin: 10px;
    cursor: pointer;
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

label[id^="label_2_41_"]:before {
    font-family: "font-icons";
    font-size: 32px;
    color: #1abc9c;
    content: " ";
    display: block;
    background-color: transparent;
    position: absolute;
    top: -5px;
    left: -5px;
    width: 25px;
    height: 25px;
    text-align: center;
    line-height: 28px;
    transition-duration: 0.4s;
    transform: scale(0);
}

label[id^="label_2_41_"] img {
    transition-duration: 0.2s;
    transform-origin: 50% 50%;
}

:checked + label[id^="label_2_41_"] {
    border-color: #ddd;
}

/* FontAwesome tick */
:checked + label[id^="label_2_41_"]:before {
    content: "\e6c8";
    background-color: transparent;
    transform: scale(1);
}

:checked + label[id^="label_2_41_"] img {
    transform: scale(0.9);
    box-shadow: 0 0 5px #333;
    z-index: 0;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.