Это простой javascript, который добавляется к сайту (у меня с помощью greasemonkey) и модифицирует интерфейс. Я выше уже выкладывал скрипт для сворачивания панели меню. А ваша идея мне понравилась и я её у себя тоже решил реализовать.
Javascript
// ==UserScript==
// @name Habrahabr HideMenu
// @namespace habrahabr.ru
// @include http://habrahabr.ru
// @version 1.2
// @grant none
// ==/UserScript==
/* Настройки */
var leftstrip_width = 11; //Ширина полосы слева (в пикселях)
var leftstrip_leftmargin = 24; //Отступ текста от полосы (в пикселях)
var hide_delay = 400; //Задержка перед скрытием панели меню после увода с нее мыши (в милисекундах)
/* Настройки End */
var default_navbarwidth = parseInt($('#navbar').css('width')); //71
var default_innermarginleft = $('.inner').css('margin-left');
var hidenavtimer;
var dotsx = default_navbarwidth-leftstrip_width/2-2;
var styles = '<style>';
styles += '.nav_userlink{color:#000} .nav_userlink:hover{text-decoration:none;} .nav_karmablock{margin: -5px 0 15px 25px; font-family: Verdana,sans-serif;} .nav_karmablock .blk{display:inline-block; text-align:center; color:#bebebe; font-size:10px;} .nav_karmablock #karma_str, .nav_karmablock #rating_str{font-size:20px; line-height:19px;} '; //Блок кармы
styles += '#navbar_disabled_overlay{display:none;position:absolute;top:0;left:0;z-index:1000;width:100%;height:100%;background:#f2f2f2 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAQCAYAAAAxtt7zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNpi3LhxozEDA0MHEJ/18/OrYAQK7AZyXBggwJWJAQ2wAHEFkpY9jP///0dRgall06ZNQ8MWgAADAEP8KXrzifKgAAAAAElFTkSuQmCC) no-repeat;} ';
styles += '</style>';
$('body').prepend(styles); //Вставляем стиль на страницу
function HideLeftMenu() {
$("#navbar_disabled_overlay").show();
$('#navbar').css('left',parseInt(leftstrip_width-default_navbarwidth)+'px');
}
function ShowLeftMenu() {
$("#navbar_disabled_overlay").hide();
$('#navbar').css('left','0');
}
$('#navbar').css('transition','left 0.1s ease').append('<div id="navbar_disabled_overlay"><div style="position:absolute;top:0;left:0;width:100%;height:71px;background:#a0c2ce;"></div></div>');
$('#navbar_disabled_overlay').css('background-position', dotsx+'px center');
$('.inner').css('margin-left', parseInt(leftstrip_width+leftstrip_leftmargin)+'px');
HideLeftMenu(); //Скрываем меню
//При наведении на полосу слева
$('#navbar_disabled_overlay').mouseenter(function(){
ShowLeftMenu(); //Показываем меню
});
//При уводе мыши с панели меню
$('#navbar').mouseleave(function(){
if($('#navbar_overlay').is(":hidden")) { //только если не раскрыто подменю
hidenavtimer = setTimeout( function() { //Взводим таймер, для того, чтобы меню скрылось не сразу а с задержкой
HideLeftMenu(); //Скрываем меню
} , hide_delay);
}
});
//При клике на затемненном оверлее (при открытом подменю)
$('#navbar_overlay').click(function(){
HideLeftMenu(); //Скрываем меню
});
//При наведении на панель меню, сбрасываем таймер
$('#navbar').mouseenter(function(){
clearTimeout(hidenavtimer);
});
if(user_type == 'habrauser') {
var nav_karma, nav_rating;
//Обращаемся к habraAPI для получения кармы
$.get('http://habrahabr.ru/api/profile/'+username+'/', function(result) {
$xml = $($.parseXML(result));
nav_karma = $xml.find('karma').text();
nav_rating = $xml.find('rating').text();
nav_karma = parseFloat(nav_karma).toFixed(1);
nav_rating = parseFloat(nav_rating).toFixed(1);
//Выводим значения кармы
$('#navbar #karma_str').html(nav_karma);
$('#navbar #rating_str').html(nav_rating);
});
var carmablock_html = '<div class="blk" style="margin-right: 12px;">Карма<div style="color:#6c6;" id="karma_str">--</div></div><div class="blk">рейтинг<div style="color:#c6c;" id="rating_str">--</div></div>';
$('#navbar #user_tab .title').html('<a class="nav_userlink" href="/users/'+username.toLowerCase()+'/">'+username+'</a>').after('<div class="nav_karmablock">'+carmablock_html+'</div>');
}
// ==UserScript==
// @name Habrahabr HideMenu
// @namespace habrahabr.ru
// @include http://habrahabr.ru
// @version 1.1
// @grant none
// ==/UserScript==
/* Настройки */
var leftstrip_width = 11; //Ширина полосы слева (в пикселях)
var leftstrip_leftmargin = 24; //Отступ текста от полосы (в пикселях)
var hide_delay = 400; //Задержка перед скрытием панели меню после увода с нее мыши (в милисекундах)
var moveinner = false; //Отодвигать ли текст при раскрытии меню
/* Настройки End */
var default_navbarwidth = parseInt($('#navbar').css('width')); //71
var default_innermarginleft = $('.inner').css('margin-left');
var hidenavtimer;
var dotsx = default_navbarwidth-leftstrip_width/2-2;
function HideLeftMenu() {
$("#navbar_disabled_overlay").show();
if(moveinner) $('.inner').css('margin-left', parseInt(leftstrip_width+leftstrip_leftmargin)+'px');
$('#navbar').css('left',parseInt(leftstrip_width-default_navbarwidth)+'px');
}
function ShowLeftMenu() {
$("#navbar_disabled_overlay").hide();
if(moveinner) $('.inner').css('margin-left', default_innermarginleft);
$('#navbar').css('left','0');
}
$('#navbar').css('transition','left 0.1s ease');
$('#navbar').append('<div id="navbar_disabled_overlay" style="display:none;position:absolute;top:0;left:0;z-index:1000;width:100%;height:100%;background:#f2f2f2 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAQCAYAAAAxtt7zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNpi3LhxozEDA0MHEJ/18/OrYAQK7AZyXBggwJWJAQ2wAHEFkpY9jP///0dRgall06ZNQ8MWgAADAEP8KXrzifKgAAAAAElFTkSuQmCC) no-repeat '+dotsx+'px center;"><div style="position:absolute;top:0;left:0;width:100%;height:71px;background:#a0c2ce;"></div></div>');
$('.inner').css('margin-left', parseInt(leftstrip_width+leftstrip_leftmargin)+'px');
HideLeftMenu(); //Скрываем меню
//При наведении на полосу слева
$('#navbar_disabled_overlay').mouseenter(function(){
ShowLeftMenu(); //Показываем меню
});
//При уводе мыши с панели меню
$('#navbar').mouseleave(function(){
if($('#navbar_overlay').is(":hidden")) { //только если не раскрыто подменю
hidenavtimer = setTimeout( function() { //Взводим таймер, для того, чтобы меню скрылось не сразу а с задержкой
HideLeftMenu(); //Скрываем меню
} , hide_delay);
}
});
//При клике на затемненном оверлее (при открытом подменю)
$('#navbar_overlay').click(function(){
HideLeftMenu(); //Скрываем меню
});
//При наведении на панель меню, сбрасываем таймер
$('#navbar').mouseenter(function(){
clearTimeout(hidenavtimer);
});
Тьфу, и комментарий уже не поправить( вот правильный код:
Код
/* Настройки */
var leftstrip_width = 11; //Ширина полосы слева (в пикселях)
var leftstrip_leftmargin = 24; //Отступ текста от полосы (в пикселях)
var hide_delay = 350; //Задержка перед скрытием панели меню после увода с нее мыши (в милисекундах)
var moveinner = false; //Отодвигать ли текст при раскрытии меню
/* Настройки End */
var default_navbarwidth = parseInt($('#navbar').css('width')); //71
var default_innermarginleft = $('.inner').css('margin-left');
var hidenavtimer;
var dotsx = default_navbarwidth-leftstrip_width/2-2;
function HideLeftMenu() {
$("#navbar_disabled_overlay").show();
$('.inner').attr('style', 'margin-left:'+parseInt(leftstrip_width+leftstrip_leftmargin)+'px;');
$('#navbar').css('left',parseInt(leftstrip_width-default_navbarwidth)+'px');
}
function ShowLeftMenu() {
$("#navbar_disabled_overlay").hide();
if(moveinner) $('.inner').attr('style', 'margin-left:'+default_innermarginleft+';');
$('#navbar').css('left','0');
}
$('#navbar').append('<div id="navbar_disabled_overlay" style="display:none;position:absolute;top:0;left:0;z-index:1000;width:100%;height:100%;background:#f2f2f2 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAQCAYAAAAxtt7zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNpi3LhxozEDA0MHEJ/18/OrYAQK7AZyXBggwJWJAQ2wAHEFkpY9jP///0dRgall06ZNQ8MWgAADAEP8KXrzifKgAAAAAElFTkSuQmCC) no-repeat '+dotsx+'px center;"><div style="position:absolute;top:0;left:0;width:100%;height:71px;background:#a0c2ce;"></div></div>');
HideLeftMenu(); //Скрываем меню
//При наведении на полосу слева
$('#navbar_disabled_overlay').mouseenter(function(){
ShowLeftMenu(); //Показываем меню
});
//При уводе мыши с панели меню
$('#navbar').mouseleave(function(){
if($('#navbar_overlay').is(":hidden")) { //только если не раскрыто подменю
hidenavtimer = setTimeout( function() { //Взводим таймер, для того, чтобы меню скрылось не сразу а с задержкой
HideLeftMenu(); //Скрываем меню
} , hide_delay);
}
});
//При клике на затемненном оверлее (при открытом подменю)
$('#navbar_overlay').click(function(){
HideLeftMenu(); //Скрываем меню
});
//При наведении на панель меню, сбрасываем таймер
$('#navbar').mouseenter(function(){
clearTimeout(hidenavtimer);
});
Вот написал юзерскрипт, который скрывает это меню с глаз долой, а оставляет заместо него узкую полосу, при наведении на которую раскрывается уже само меню. При уводе мыши с меню или по клику на полупрозрачный оверлей в подменю, меню опять скрывается.
Скрипт можно установить например с помощью greasemonkey для firefox.
Имеется четыре настраиваемых параметра: leftstrip_width — ширина полосы слева (в пикселях). leftstrip_leftmargin — отступ текста от полосы (в пикселях) hide_delay — задержка перед скрытием панели меню после увода с нее мыши (в милисекундах) moveinner — отодвигать ли текст при раскрытии меню. По умолчанию flase, меню при этом при раскрытии накладывается поверх текста. При true будет выглядеть так.
Скриншоты
Код
/* Настройки */
var leftstrip_width = 11; //Ширина полосы слева (в пикселях)
var leftstrip_leftmargin = 24; //Отступ текста от полосы (в пикселях)
var hide_delay = 350; //Задержка перед скрытием панели меню после увода с нее мыши (в милисекундах)
/* Настройки End */
var default_navbarwidth = parseInt($('#navbar').css('width')); //71
var default_innermarginleft = $('.inner').css('margin-left');
var hidenavtimer;
var dotsx = default_navbarwidth-leftstrip_width/2-2;
function HideLeftMenu() {
$("#navbar_disabled_overlay").show();
$('.inner').attr('style', 'margin-left:'+parseInt(leftstrip_width+leftstrip_leftmargin)+'px;');
$('#navbar').css('left',parseInt(leftstrip_width-default_navbarwidth)+'px');
}
function ShowLeftMenu() {
$("#navbar_disabled_overlay").hide();
$('.inner').attr('style', 'margin-left:'+default_innermarginleft+';');
$('#navbar').css('left','0');
}
$('#navbar').append('<div id="navbar_disabled_overlay" style="display:none;position:absolute;top:0;left:0;z-index:1000;width:100%;height:100%;background:#f2f2f2 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAQCAYAAAAxtt7zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD5JREFUeNpi3LhxozEDA0MHEJ/18/OrYAQK7AZyXBggwJWJAQ2wAHEFkpY9jP///0dRgall06ZNQ8MWgAADAEP8KXrzifKgAAAAAElFTkSuQmCC) no-repeat '+dotsx+'px center;"><div style="position:absolute;top:0;left:0;width:100%;height:71px;background:#a0c2ce;"></div></div>');
HideLeftMenu(); //Скрываем меню
//При наведении на полосу слева
$('#navbar_disabled_overlay').mouseenter(function(){
ShowLeftMenu(); //Показываем меню
});
//При уводе мыши с панели меню
$('#navbar').mouseleave(function(){
if($('#navbar_overlay').is(":hidden")) { //только если не раскрыто подменю
hidenavtimer = setTimeout( function() { //Взводим таймер, для того, чтобы меню скрылось не сразу а с задержкой
HideLeftMenu(); //Скрываем меню
} , hide_delay);
}
});
//При клике на затемненном оверлее (при открытом подменю)
$('#navbar_overlay').click(function(){
HideLeftMenu(); //Скрываем меню
});
//При наведении на панель меню, сбрасываем таймер
$('#navbar').mouseenter(function(){
clearTimeout(hidenavtimer);
});
У меня такой эффект бывает при прослушивании некоторой trance музыки, натурально мурашки по коже начинают бегать, а громкость хочется выкрутить на максимум.
На тостере этот дизайн нормально смотрится, а тут как то совсем не в тему. Сверху страницу как обрубили и эта мозолящая глаз полоса сбоку. Ненавижу редизайны и всякие «улучшения».
С каждым новым обновлением развивается уже какая то паническая боязнь перед ними, уже заранее думаешь: «что упростили донельзя на этот раз, какой элемент интерфейса упразднили в этот раз?»
Хорошо, что есть Classic Theme Restorer. Плагином Status-4-Evar пользуюсь уже с давних пор, с тех пор как упразднили статусбар.
В 29 версии поломался плагин переводчика Lingualeo.
А что обычно используют в качестве VID номера? Ведь по идее право использования конкретного номера нужно покупать.
При использовании таких вещей как usb-uart мосты и даже V-USB библиотеки, VID и PID номера уже есть, а что делать в вашем случае? Может для любительских поделок выделен какой то диапазон номеров?
Привет, народ. Мне для одного проекта потребовалось прикрутить эту базу, но ВСЕ НАЗВАНИЯ КАПСОМ!
Делюсь функцией на php, которая принимает строку (хоть капсом, хоть как) и делает каждое слово с большой буквы, кроме слов исключений, типа «район», «область» и т.д.
Особенности: первая буква слова в скобках тоже будет увеличена, слова могут быть разделены пробелом или тире.
Примеры работы, первая строка до обработки, вторая после обработки
МОСКОВСКАЯ ОБЛАСТЬ, ОДИНЦОВО
Московская область, Одинцово
САРАТОВСКАЯ ОБЛАСТЬ, КРАСНОАРМЕЙСКИЙ РАЙОН, САДОВОЕ
Саратовская область, Красноармейский район, Садовое
ТЮМЕНСКАЯ ОБЛАСТЬ, ХАНТЫ-МАНСИЙСКИЙ-ЮГРА АВТОНОМНЫЙ ОКРУГ
Тюменская область, Ханты-Мансийский-Югра автономный округ
САХА (ЯКУТИЯ) РЕСПУБЛИКА, ЯКУТСК
Саха (Якутия) Республика, Якутск
Код
/*
Функция предназначена для нормализации написания названий населенных пунктов из базы индексов Почты России,
http://info.russianpost.ru/database/ops.html
Функция возвращает строку, где каждое слово пишется с большой буквы, кроме слов исключений
Пример:
МОСКОВСКАЯ ОБЛАСТЬ, ОДИНЦОВО -> Московская область, Одинцово
САРАТОВСКАЯ ОБЛАСТЬ, КРАСНОАРМЕЙСКИЙ РАЙОН, САДОВОЕ -> Саратовская область, Красноармейский район, Садовое
ТЮМЕНСКАЯ ОБЛАСТЬ, ХАНТЫ-МАНСИЙСКИЙ-ЮГРА АВТОНОМНЫЙ ОКРУГ -> Тюменская область, Ханты-Мансийский-Югра автономный округ
САХА (ЯКУТИЯ) РЕСПУБЛИКА, ЯКУТСК -> Саха (Якутия) Республика, Якутск
*/
function RussianPost_NormalizeWords($string, $encoding='utf-8') {
//Слова исключения, они не будут написаны с большой буквы
$exceptions = array('автономный','автономная','округ','район','область','край','немецкий','национальный');
$string = mb_strtolower(trim($string), $encoding); //перевод всех букв в нижний регистр
$word = preg_split('/[\s-]+/', $string, -1, PREG_SPLIT_OFFSET_CAPTURE); //Разделяем строку на отдельные слова (разделители: пробел, тире)
$resultstring = ''; //Результирующая строка
for($i=0; $i<count($word); $i++) {
$substr = $word[$i][0]; //Отдельное слово из строки
$substr_nothooks = str_replace(array(')','(',',','.'),'',$substr); //Удаляем скобки, запятые, точки (для проверки слова на исключение)
if(!in_array($substr_nothooks, $exceptions)) { //Если слова нет в исключениях,
$offset1 = ($substr[0]=='(') ? 2 : 1; //Смещение первой буквы, нужно для того, чтобы правило применялось к словам в скобках
$first = mb_substr($substr, 0, $offset1, $encoding); //первая буква
$rest = mb_substr($substr, $offset1, mb_strlen($substr, $encoding), $encoding); //все кроме первой буквы
$first = mb_strtoupper($first, $encoding); //Переводим первую букву в верхний регистр
$substr = $first.$rest;
}
$splitter = (isset($word[$i+1])) ? substr($string, $word[$i+1][1]-1, 1) : ''; //Определяем разделитель между словами (пробел или тире)
$resultstring .= $substr.$splitter; //Склеиваем строку из отдельных слов, устанавливаем разделители между словами (пробел или тире)
}
return $resultstring; //Возвращаем строку.
}
Красивый прибор, интересная идея.
От чего он питается? На фотографиях не видно проводов, там аккумулятор?
Какое примерно суммарное потребление тока у такого экранчика?
Скрипт можно установить например с помощью greasemonkey для firefox.
Имеется четыре настраиваемых параметра:
leftstrip_width — ширина полосы слева (в пикселях).
leftstrip_leftmargin — отступ текста от полосы (в пикселях)
hide_delay — задержка перед скрытием панели меню после увода с нее мыши (в милисекундах)
moveinner — отодвигать ли текст при раскрытии меню. По умолчанию flase, меню при этом при раскрытии накладывается поверх текста. При true будет выглядеть так.
Хорошо, что есть Classic Theme Restorer. Плагином Status-4-Evar пользуюсь уже с давних пор, с тех пор как упразднили статусбар.
В 29 версии поломался плагин переводчика Lingualeo.
При использовании таких вещей как usb-uart мосты и даже V-USB библиотеки, VID и PID номера уже есть, а что делать в вашем случае? Может для любительских поделок выделен какой то диапазон номеров?
Интересно, будет ли где нибудь трансляция стыковки?
Делюсь функцией на php, которая принимает строку (хоть капсом, хоть как) и делает каждое слово с большой буквы, кроме слов исключений, типа «район», «область» и т.д.
Особенности: первая буква слова в скобках тоже будет увеличена, слова могут быть разделены пробелом или тире.
Примеры работы, первая строка до обработки, вторая после обработки
От чего он питается? На фотографиях не видно проводов, там аккумулятор?
Какое примерно суммарное потребление тока у такого экранчика?