tips and tricks

градиент-эффект перетекания в прозрачный css

пример на странице интересного дизайн продукта для маковки
-webkit-mask-position: 0 0;
-webkit-mask-size: 100% 100%;
-webkit-mask-image: linear-gradient(90deg, hsla(0, 0%, 0%, 0), hsla(0, 0%, 0%, .2) 50%, hsla(0, 0%, 0%, .8) 80%, hsla(0, 0%, 0%, 1) 100%);

вызов FirePHP в init.php

прекрепляю сам файлик FirePHP.class.php и ссылку на расширение для chrome
Как думаете, для чего нужен такой дебагер, если можно написать свой и чтоб js писал в консоль?,
а нужен FirePHP например для ajax запросов в json формате и firephp не ломает ответ сервера и вообще не участвует в теле ответа запроса, так же, firephp не оставляет в html следов дебага, которые могут восприниматься поисковиками или элементарно ломать верстку, в общем всем советую для определенного круга задач
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/templates/.default/FirePHP.class.php');
$firephp = FirePHP::getInstance(true);
$options = array(
'maxObjectDepth' => 15,
'maxArrayDepth' => 15,
'maxDepth' => 15,
'useNativeJsonEncode' => true,
'includeLineNumbers' => true
);
$firephp->setOptions($options);

объявление крос шрифта css



@font-face {
font-family: 'robotolight';
src: url('../fonts/roboto-light-webfont.eot');
src: url('../fonts/roboto-light-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/roboto-light-webfont.woff') format('woff'),
url('../fonts/roboto-light-webfont.ttf') format('truetype'),
url('../fonts/roboto-light-webfont.svg#robotolight') format('svg');
font-weight: normal;
font-style: normal;
}

e-mail из главного модуля


$strEmail = COption::GetOptionString('main','email_from');

валидация с jQuery Validation Plugin, ajax post и оборачивание контента в fancybox

var validator_list_top_form = $("#top-feedback-form").validate({
        errorPlacement: function(error, element) {
            error.prependTo(element.parent(".one-field-top-form-wrapper").find('.error-label-wrapper'));
        },
        errorClass: "error-form-field",
        rules:{
            top_name:{
                required: true,
                minlength: 1,
                maxlength: 100
            },
            top_phone:{
                required: true,
                digits: true,
                minlength: 5,
                maxlength: 11
            }
        },
        messages:{
            top_name:{
                required: "Это поле обязательно для заполнения",
                minlength: "Минимальная длина поля 1 символ",
                maxlength: "Максимальное число символов - 100"
            },
            top_phone:{
                required: "Это поле обязательно для заполнения",
                digits: "Требуется ввести числовое значение",
                minlength: "Минимальная длина телефона 5 символов",
                maxlength: "Максимальная длина телефона 11 символов"
            }
        }
    });
$('#top-feedback-form').submit(function(){     
if(validator_list.errorList.length==0){
var property = new Object();
property.trigger_name = 'feedback-message';
property.name = $('#top-feedback-form input[name="name"]').val();
property.phone = $('#top-feedback-form input[name="phone"]').val();
var request = $.post(
"/bitrix/templates/.default/ajax-answers/mail-sender.php",
{
"trigger_name" : property.trigger_name,
"name" : property.name,
"phone" : property.phone
},
function(msg){
console.log(msg);
if(msg.error==false){
$.fancybox.open({
height : 50,
autoSize : false,
content : '<div class="server-error-message" >'+msg.error_message+'</div>',
maxWidth : 250,
maxHeight : 10
});
}
else if (msg.error==true){
$.fancybox( '<div class="server-error-message" style="color: red">'+msg.error_message+'</div>' );
}
},
"json"
);
request.fail(function(jqXHR, textStatus) {
alert( "Request failed: " + textStatus );
});
}
return false;
});

удаление тега регулярным выражением php


preg_replace('/<a(.*)>|<\/a>/sU','',$text)


Вы должны авторизоваться, чтобы оставлять комментарии.

Загрузка ...
some text