! Сегодня

Главная » Web и Технологии » Красивые кнопки социальных сетей для сайта

Красивые кнопки социальных сетей для сайта

Проблема в том, что, не рискуя, мы рискуем в сто раз больше.

1-июня-2023, 22:32   131   0

Красивые кнопки социальных сетей для сайта

Приветствую Вас уважаемые посетители нашего портала. Понадобилось мне немного доработать свой сайт, так как он всё ещё в процессе визуальной наладки установить кнопочки поделиться в социальных сетях. Перепробовал различные сайты которые предоставляют данную услугу. Но всё не то , тем более возможно все помнят такой сервис как Pluso  когда вместе с кнопками грузился и вредоносный код. Можно установить скрипт более надежного сервиса, такого как Яндекс. Но опять же что то изменить под свой вкус и цвет проблематично. 

Ну и как всегда на помощь приходит всемирная паутина. Немного поискав нашел простенькое решение данной проблемы. С кодом заморочек нет , всё прекрасно работает. Ну а теперь подробнее остановимся на установке кнопок социальных сетей без сторонних сервисов.

HTML

<div id="share">
<div class="like">Поделитесь с друзьями!</div>
<div class="social">
    <a class="push facebook" data-id="fb"><i class="fa fa-facebook"></i> Facebook</a>
    <a class="push twitter" data-id="tw"><i class="fa fa-twitter"></i> Twitter</a>
    <a class="push vkontakte" data-id="vk"><i class="fa fa-vk"></i> Вконтакте</a>
    <a class="push ok" data-id="ok"><i class="fa fa-odnoklassniki"></i> Одноклассники</a>
</div>
</div>


CSS

#share {
    width: 100%;
    border: 1px solid #eaeaea;
    margin: 0 auto;
    background: #fff;
    text-align: center;
}
.like {
    font-size: 16px;
    font-weight: 700;
    line-height: 50px;
}
.push {
    display: inline-block;
    width: 22%;
    min-width: 100px;
    line-height: 40px;
    margin: 5px 2px 20px 2px;
    font-size: 15px;
    text-align: center;
    color: #fff;
    cursor: pointer;
}
 
.facebook {background-color: #4267b2;}
.facebook:hover {background-color: #365899; color: #fff;}
 
.twitter {background-color: #1da1f2;}
.twitter:hover {background-color: #1a91da; color: #fff;}
 
.vkontakte {background-color: #5181b8;}
.vkontakte:hover {background-color: #5b88bd; color: #fff;}
 
.ok {background-color: #ee8208;}
.ok:hover {background-color: #ee7808; color: #fff;}


JS

var Shares = {
    title: 'Поделиться',
    width: 800,
    height: 800,

    init: function() {
        var share = document.querySelectorAll('.social');
        for(var i = 0, l = share.length; i < l; i++) {
            var url = share[i].getAttribute('data-url') || location.href, title = share[i].getAttribute('data-title') || '', 
                desc = share[i].getAttribute('data-desc') || '', el = share[i].querySelectorAll('a');
            for(var a = 0, al = el.length; a < al; a++) {
                var id = el[a].getAttribute('data-id');
                if(id)
                    this.addEventListener(el[a], 'click', {id: id, url: url, title: title, desc: desc});
            }
        }
    },

    addEventListener: function(el, eventName, opt) {
        var _this = this, handler = function() {
            _this.share(opt.id, opt.url, opt.title, opt.desc);
        };
        if(el.addEventListener) {
            el.addEventListener(eventName, handler);
        } else {
            el.attachEvent('on' + eventName, function() {
                handler.call(el);
            });
        }
    },

    share: function(id, url, title, desc) {
        url = encodeURIComponent(url);
        desc = encodeURIComponent(desc);
        title = encodeURIComponent(title);
        switch(id) {
            case 'fb':
                this.popupCenter('https://www.facebook.com/sharer/sharer.php?u=' + url, this.title, this.width, this.height);
                break;
            case 'vk':
                this.popupCenter('https://vk.com/share.php?url=' + url + '&description=' + title + '. ' + desc, this.title, this.width, this.height);
                break;
            case 'tw':
                var text = title || desc || '';
                if(title.length > 0 && desc.length > 0)
                    text = title + ' - ' + desc;
                if(text.length > 0)
                    text = '&text=' + text;
                this.popupCenter('https://twitter.com/intent/tweet?url=' + url + text, this.title, this.width, this.height);
                break;
            case 'ok':
                this.popupCenter('https://connect.ok.ru/dk?st.cmd=WidgetSharePreview&st.shareUrl=' + url, this.title, this.width, this.height);
                break;
        }
    },

    newTab: function(url) {
        var win = window.open(url, '_blank');
        win.focus();        
    },

    popupCenter: function(url, title, w, h) {
        var dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : screen.left;
        var dualScreenTop = window.screenTop !== undefined ? window.screenTop : screen.top;
        var width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;
        var height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;
        var left = ((width / 2) - (w / 2)) + dualScreenLeft;
        var top = ((height / 3) - (h / 3)) + dualScreenTop;
        var newWindow = window.open(url, title, 'scrollbars=yes, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);
        if (window.focus) {
                newWindow.focus();
        }
    }
};

jQuery(document).ready(function($) {
    $('.social a').on('click', function() {
        var id = $(this).data('id');
        if(id) {
            var data = $(this).parent('.social');
            var url = data.data('url') || location.href, title = data.data('title') || '', desc = data.data('desc') || '';
            Shares.share(id, url, title, desc);
        }
    });
});

Проблем возникнуть не должно. Кнопки социальных сетей располагаем в удобном месте сайта. Стили вставляем в файл ваших пользовательских стилей , ну а скрипт в соответствующий файл скриптов.  Вот в принципе и всё. 

Поделиться

Tags

  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent
Человек быстро решит загадку пять умножить на пять и минус 25 ?

Редакторы выбирают

Web и Технологии