ProjeXCode Forum: Random Post Slider // Dragable + Mouse Wheels

Title Role Staff

Title Role Senior Member

Title Role Member

Title Role Junior Member

Title Role New Member

Title Badge Moderator

Title Color Moderator

Title Badge Staff

Title Color Staff

Title Badge Member

Title Color Member

Status Info

Status Verified

ADS Title User

Your Time :

Server Time :

  • Random Post Slider // Dragable + Mouse Wheels
    March 10, 2022
    Share this Threads
    Close
    Request Dari Anak Discord -X- Zone (Gilang4321#4406).

    Demo Click Disini.

    Style.css :

    .itemSlider {
            min-width: 210px;
            height: 100%;
    }
    .dataItem img {
            width: 100%;
            height: 315px;
            border-radius: 8px;
            object-fit: fill;
    }
    .sliderImg,.dataItem a{
      -webkit-user-drag: none;
      -ms-user-drag: none;
      -moz-user-drag: none;
      user-drag: none;
      user-select: none;
    }
    .dataItem {
            position: relative;
    }
    .num {
            position: absolute;
            top: 0;
            left: 8px;
            background: #25008a;
            color: white;
            padding: 8px 10px;
            border-radius: 0 0 8px 8px;
            font-weight: 600;
            font-size: 16px;
    }
    #slides {
            display: flex;
            overflow: hidden;
            scroll-behavior:smooth;
            gap: 10px;
    }
    .active{cursor:grab;}
    .ItemsTitle{text-align:center;margin-top:4px;font-weight:600;font-size:16px;}


    Untuk Menampilkan Hasil Slider :

    <div id='slides'></div>


    Untuk JS:

    $.ajax({
    url: 'https://www.forum.projexcode.com/feeds/posts/default?orderby=published&alt=json-in-script&max-results=150',
    type: 'get',
    dataType: 'jsonp',
    success: function(json) {
    let target = [],
    num = 1;
    for(var i = 0;i<json.feed.entry.length;i++){
    var key = {};
    feeds = json.feed.entry[parseInt(Math.random() * json.feed.entry.length)];
    key['title'] = feeds.title.$t;
    for(var e = 0;e<feeds.link.length;e++){
    key['href'] = feeds.link[e].href;
    }
    var imgs,
    c = feeds.content.$t,
    d=c.indexOf("<img"),
    e=c.indexOf('src="',d),
    f=c.indexOf('"',e+5),
    g=c.substr(e+5,f-e-5);
    imgs=-1!=d&&-1!=e&&-1!=f&&""!=g?g:"https://images.bizlaw.id/gbr_artikel/images-2_294.webp";
      
    key['img'] = feeds.media$thumbnail != null ? feeds.media$thumbnail.url.replace(/s72-c/,'s500').replace(/=s72-c/,'s500') : imgs;
    target[i] = key;
    }
    
    var dupe = target.filter((tag, index, array) => array.findIndex(t => t.title == tag.title) == index);
    
    for(var o=0;o<10;o++){
          $('#slides').append('<div class="itemSlider"><div class="dataItem"><div><img loading="lazy" src="'+dupe[o].img+'" class="sliderImg" ondragstart="event.preventDefault();"/><div class="num">'+num+++'</div></div><a href="'+dupe[o].href+'"><div class="ItemsTitle">'+dupe[o].title+'</div></a></div></div>');
         }
    },
    error: function() {$('#slides').html('<strong>Error Getting Data!</strong>');}
    });
    
    const scrollContainer = document.getElementById("slides");
    
    scrollContainer.addEventListener("wheel", (evt) => {
        evt.preventDefault();
        scrollContainer.scrollLeft += evt.deltaY;
    });
    
    let isDown = false;
    let startX;
    let scrollLeft;
    const slider = document.querySelector('.slides');
    const thisImg = document.querySelector('.sliderImg');
    const end = (e) => {
    	isDown = false;
      slider.classList.remove('active');
    }
    
    const start = (e) => {
      isDown = true;
      slider.classList.add('active');
      startX = e.pageX || e.touches[0].pageX - slider.offsetLeft;
      scrollLeft = slider.scrollLeft;	
    }
    
    const move = (e) => {
    	if(!isDown) return;
      e.preventDefault();
      const x = e.pageX || e.touches[0].pageX - slider.offsetLeft;
      const dist = (x - startX);
      slider.scrollLeft = scrollLeft - dist;
    }
    
    (() => {
    	slider.addEventListener('mousedown', start);
    	slider.addEventListener('touchstart', start);
      
    	slider.addEventListener('mousemove', move);
    	slider.addEventListener('touchmove', move);
    
    	slider.addEventListener('mouseleave', end);
    	slider.addEventListener('mouseup', end);
    	slider.addEventListener('touchend', end);
    })();


    Ubah URL dibawah ini dengan URL kalian :

    https://www.forum.projexcode.com
    Last edited : March 10, 2022
    Fri Mar 11, 09:05:00 AM GMT+9
    Style ini Lettakkan di atas tag </head>:
    <b:if cond='data:view.isHomepage'>

    <style>
    .itemSlider {
    min-width: 210px;
    height: 100%;
    }
    .dataItem img {
    width: 100%;
    height: 315px;
    border-radius: 8px;
    object-fit: fill;
    }
    .sliderImg,.dataItem a{
    -webkit-user-drag: none;
    -ms-user-drag: none;
    -moz-user-drag: none;
    user-drag: none;
    user-select: none;
    }
    .dataItem {
    position: relative;
    }
    .num {
    position: absolute;
    top: 0;
    left: 8px;
    background: #25008a;
    color: white;
    padding: 8px 10px;
    border-radius: 0 0 8px 8px;
    font-weight: 600;
    font-size: 16px;
    }
    #slides {
    display: flex;
    overflow: hidden;
    scroll-behavior:smooth;
    gap: 10px;
    }
    .active{cursor:grab;}
    .ItemsTitle{text-align:center;margin-top:4px;font-weight:600;font-size:16px;}
    @media screen and (max-width:720px){
    #slides{overflow-x:auto;scrollbar-width:none;scroll-snap-type:x mandatory}
    .itemSlider{scroll-snap-align:center}
    }
    </style>
    </b:if>


    letakkan ke tempat mana saja yang mau ditampilkan :
    <b:if cond='data:view.isHomepage'>
    <div id='slides' class='slides'></div>
    </b:if>
    Fri Mar 11, 09:05:00 AM GMT+9
    letakkan di atas tag </body>:
    <b:if cond='data:view.isHomepage'>
    <script>//<![CDATA[
    $.ajax({
    url: 'https://www.forum.projexcode.com/feeds/posts/default?orderby=published&alt=json-in-script&max-results=150',
    type: 'get',
    dataType: 'jsonp',
    success: function(json) {
    let target = [],
    num = 1;
    for(var i = 0;i<json.feed.entry.length;i++){
    var key = {};
    feeds = json.feed.entry[parseInt(Math.random() * json.feed.entry.length)];
    key['title'] = feeds.title.$t;
    for(var e = 0;e<feeds.link.length;e++){
    key['href'] = feeds.link[e].href;
    }
    var imgs,
    c = feeds.content.$t,
    d=c.indexOf("<img"),
    e=c.indexOf('src="',d),
    f=c.indexOf('"',e+5),
    g=c.substr(e+5,f-e-5);
    imgs=-1!=d&&-1!=e&&-1!=f&&""!=g?g:"https://images.bizlaw.id/gbr_artikel/images-2_294.webp";

    key['img'] = feeds.media$thumbnail != null ? feeds.media$thumbnail.url.replace(/s72-c/,'s500').replace(/=s72-c/,'s500') : imgs;
    target[i] = key;
    }

    var dupe = target.filter((tag, index, array) => array.findIndex(t => t.title == tag.title) == index);

    for(var o=0;o<10;o++){
    $('#slides').append('<div class="itemSlider"><div class="dataItem"><div><img loading="lazy" src="'+dupe[o].img+'" class="sliderImg" ondragstart="event.preventDefault();"/><div class="num">'+num+++'</div></div><a href="'+dupe[o].href+'"><div class="ItemsTitle">'+dupe[o].title+'</div></a></div></div>');
    }
    },
    error: function() {$('#bodynotify').html('<strong>Error Getting Data!</strong>');}
    });
    if(!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)){
    const scrollContainer = document.getElementById("slides");

    scrollContainer.addEventListener("wheel", (evt) => {
    evt.preventDefault();
    scrollContainer.scrollLeft += evt.deltaY;
    });
    let isDown = false;
    let startX;
    let scrollLeft;
    const slider = document.querySelector('.slides');
    const thisImg = document.querySelector('.sliderImg');
    const end = (e) => {
    isDown = false;
    slider.classList.remove('active');
    }

    const start = (e) => {
    isDown = true;
    slider.classList.add('active');
    startX = e.pageX || e.touches[0].pageX - slider.offsetLeft;
    scrollLeft = slider.scrollLeft;
    }

    const move = (e) => {
    if(!isDown) return;
    e.preventDefault();
    const x = e.pageX || e.touches[0].pageX - slider.offsetLeft;
    const dist = (x - startX);
    slider.scrollLeft = scrollLeft - dist;
    }

    (() => {
    slider.addEventListener('mousedown', start);
    slider.addEventListener('touchstart', start);

    slider.addEventListener('mousemove', move);
    slider.addEventListener('touchmove', move);

    slider.addEventListener('mouseleave', end);
    slider.addEventListener('mouseup', end);
    slider.addEventListener('touchend', end);
    })();
    }
    //]]></script>
    </b:if>


    wajib gunakan Jquery Library pasang di bawah tag <head> jika di blog kalian belum terpasang.

    <script src='https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js'></script>

    untuk responsive mobila/tampilan mobile kalian sesuaikan sendiri.cuma width image doang.
    Fri Mar 11, 09:24:00 PM GMT+9
    kok gambarnya malah jadi setengah doank ya min?

    https://jempolgamer.blogspot.com/
    Fri Mar 11, 09:46:00 PM GMT+9
    @Gilang F
    Hapus padding-top: 40%;
    di class
    .sliderImg
    Fri Mar 11, 09:59:00 PM GMT+9
    CSS mu bentrok itu.
    https://blogger.googleusercontent.com/img/a/AVvXsEiseQPhxTLPSgczWYq5N_ghGlLCzk50s6W9hJyxuoTZ3F0TUnokojLSEmbI8RsGma5GQWqLZuGy0uwfHgFvP2xfNAaneYnhzd4vGPwImsU4PdgoX81m-TGpj6Jn5YOQbx9NBUmHfHd5FGOVBhrHRR4NLXZff2RFUZRL6GCT5uQdGnir51v_8ArOPhX4Zg=s313

    kalo memang ada class yg sama dan digunain,kamu ganti aja JS-nya dengan dibawah ini:
    <b:if cond='data:view.isHomepage'>
    <script>//<![CDATA[
    $.ajax({
    url: 'https://www.forum.projexcode.com/feeds/posts/default?orderby=published&alt=json-in-script&max-results=150',
    type: 'get',
    dataType: 'jsonp',
    success: function(json) {
    let target = [],
    num = 1;
    for(var i = 0;i<json.feed.entry.length;i++){
    var key = {};
    feeds = json.feed.entry[parseInt(Math.random() * json.feed.entry.length)];
    key['title'] = feeds.title.$t;
    for(var e = 0;e<feeds.link.length;e++){
    key['href'] = feeds.link[e].href;
    }
    var imgs,
    c = feeds.content.$t,
    d=c.indexOf("<img"),
    e=c.indexOf('src="',d),
    f=c.indexOf('"',e+5),
    g=c.substr(e+5,f-e-5);
    imgs=-1!=d&&-1!=e&&-1!=f&&""!=g?g:"https://images.bizlaw.id/gbr_artikel/images-2_294.webp";

    key['img'] = feeds.media$thumbnail != null ? feeds.media$thumbnail.url.replace(/s72-c/,'s500').replace(/=s72-c/,'s500') : imgs;
    target[i] = key;
    }

    var dupe = target.filter((tag, index, array) => array.findIndex(t => t.title == tag.title) == index);

    for(var o=0;o<10;o++){
    $('#slides').append('<div class="itemSlider"><div class="dataItem"><div><img loading="lazy" src="'+dupe[o].img+'" ondragstart="event.preventDefault();"/><div class="num">'+num+++'</div></div><a href="'+dupe[o].href+'"><div class="ItemsTitle">'+dupe[o].title+'</div></a></div></div>');
    }
    },
    error: function() {$('#bodynotify').html('<strong>Error Getting Data!</strong>');}
    });
    if(!/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)){
    const scrollContainer = document.getElementById("slides");

    scrollContainer.addEventListener("wheel", (evt) => {
    evt.preventDefault();
    scrollContainer.scrollLeft += evt.deltaY;
    });
    let isDown = false;
    let startX;
    let scrollLeft;
    const slider = document.querySelector('.slides');

    const end = (e) => {
    isDown = false;
    slider.classList.remove('active');
    }

    const start = (e) => {
    isDown = true;
    slider.classList.add('active');
    startX = e.pageX || e.touches[0].pageX - slider.offsetLeft;
    scrollLeft = slider.scrollLeft;
    }

    const move = (e) => {
    if(!isDown) return;
    e.preventDefault();
    const x = e.pageX || e.touches[0].pageX - slider.offsetLeft;
    const dist = (x - startX);
    slider.scrollLeft = scrollLeft - dist;
    }

    (() => {
    slider.addEventListener('mousedown', start);
    slider.addEventListener('touchstart', start);

    slider.addEventListener('mousemove', move);
    slider.addEventListener('touchmove', move);

    slider.addEventListener('mouseleave', end);
    slider.addEventListener('mouseup', end);
    slider.addEventListener('touchend', end);
    })();
    }
    //]]></script>
    </b:if>
    Fri Mar 11, 09:59:00 PM GMT+9
    ubah style yg ada tulisan dragnya menjadi ini :
    .dataItem img,.dataItem a{
    -webkit-user-drag: none;
    -ms-user-drag: none;
    -moz-user-drag: none;
    user-drag: none;
    user-select: none;
    }

    tambahan jika kamu pengen ubah berapa jumlah yg muncul. cari di JSnya seperti dibawah ini :
    for(var o=0;o<10;o++){
    $('#slides').append('<div class="itemSlider"><div class="dataItem"><div><img loading="lazy" src="'+dupe[o].img+'" ondragstart="event.preventDefault();"/><div class="num">'+num+++'</div></div><a href="'+dupe[o].href+'"><div class="ItemsTitle">'+dupe[o].title+'</div></a></div></div>');
    }


    pada loop var o. angka 10 kamu ganti terserah itu nanti jumlah yg akan muncul.
    Fri Mar 11, 10:13:00 PM GMT+9
    tambahan lagi. trnyata ada yg kurang ama JS-nya cari key['img'] pada JS ubah menjadi ini :
    key['img'] = feeds.media$thumbnail != null ? feeds.media$thumbnail.url.replace(/s72-c/,'s500').replace(/=s72-c/,'=s500') : imgs;

    kurang nambahin '=' doang pada .replace(/=s72-c/,'s500'). ini untuk mengganti resolusi di URL gambar terbaru
    Sat Mar 12, 12:56:00 AM GMT+9
    mantep banget bang kau pahlawan banget emang :D

    maaf nih banyak banyak nanya dan permintaan yang ngerepotin dari marin

    random slidernya udah bekerja sesuai yang ane mau, nah sekarang ane mau untuk title dan efeknya kayak link di sini bisa gk bang? Yang tagsnya gk usah ada

    https://moview-templatemark.blogspot.com/

    biar lebih enak dilihat dan saat hover mouse ada efeknya, sekali lagi maaf nih bang repotin
    Sat Mar 12, 06:52:00 AM GMT+9
    CSS nya ubah menjadi ini:
    .itemSlider {
    min-width: 210px;
    height: 100%;
    }
    .dataItem img {
    width: 100%;
    height: 315px;
    border-radius: inherit;
    object-fit: fill;
    transition: transform .5s ease;
    }
    .dataItem img,.dataItem a{
    -webkit-user-drag: none;
    -ms-user-drag: none;
    -moz-user-drag: none;
    user-drag: none;
    user-select: none;
    }
    .dataItem {
    position: relative;
    }
    .num {
    position: absolute;
    top: 0;
    left: 8px;
    background: #25008a;
    color: white;
    padding: 8px 10px;
    border-radius: 0 0 8px 8px;
    font-weight: 600;
    font-size: 16px;
    }
    #slides {
    display: flex;
    overflow: hidden;
    scroll-behavior:smooth;
    gap: 10px;
    }
    .active{cursor:grab;}
    .ItemsTitle{font-weight:800;font-size:14px;padding: 8px;background:#0000008c;color:white;}

    .dataItem div:not(.ItemsTitle):nth-child(1) {
    display: flex;
    align-items: center;
    overflow: hidden;
    border-radius: 8px;
    }
    .itemSlider:hover .dataItem img {
    transform: scale(1.5);
    }
    .itemSlider .dataItem a {
    position: absolute;
    bottom: 0;
    width:100%;
    }
    @media screen and (max-width:720px){
    #slides{overflow-x:auto;scrollbar-width:none;scroll-snap-type:x mandatory}
    .itemSlider{scroll-snap-align:center}
    }


    untuk demo hasil tetep link Demo Diatas
    Sun Mar 13, 06:40:00 AM GMT+9
    mantap bisa min, tapi ini kenapa banyak gambar thumbnailnya yang jadi 404 ya min? malah ada gambar thumbnail yang gk muncul juga
    Sun Mar 13, 07:19:00 AM GMT+9
    404 itu tandanya gada thumbnail di postnya.kamu bisa custom dengan cara cari url dibawah ini pada jsnya lalu kamu ganti dengan gambarmu :
    https://images.bizlaw.id/gbr_artikel/images-2_294.webp
    masa ga muncul sama sekali ? brrti masalahnya di replcae resolusi.kalo mau DM ke discordku link blogmu ku cek di tempat.soalnya feed di contoh aman aja itu
    Mon Mar 14, 07:43:00 PM GMT+9
    Permisi min, untuk cara tambahin button next dan back di sisi kanan dan kiri beserta efek transisi gambarnya ke ganti" sendiri, bisa gk?
    Mon Mar 14, 09:04:00 PM GMT+9
    besok ku kerjain.kukira dragable doang soalnya dicontoh yg dikirim di dc gada btn nya :D
    Mon Mar 14, 09:25:00 PM GMT+9
    woke min, ini dapet saran dari teman katanya biar lebih enak
    Tue Mar 15, 02:04:00 PM GMT+9
    Feature ini update Penambahan Slideshow :
    silahkan ke Post Terbaru.

    https://www.forum.projexcode.com/2022/03/random-post-slider-dragable-wheels.html

    Similar Threads